Showing preview only (5,808K chars total). Download the full file or copy to clipboard to get everything.
Repository: tinygo-org/tinygo
Branch: release
Commit: db9f1182f5f2
Files: 1654
Total size: 5.3 MB
Directory structure:
gitextract_7h6a1yup/
├── .circleci/
│ └── config.yml
├── .dockerignore
├── .github/
│ ├── FUNDING.yml
│ └── workflows/
│ ├── build-macos.yml
│ ├── docker.yml
│ ├── linux.yml
│ ├── llvm.yml
│ ├── nix.yml
│ ├── sizediff-install-pkgs.sh
│ ├── sizediff.yml
│ ├── tinygo-extract-version.sh
│ └── windows.yml
├── .gitignore
├── .gitmodules
├── BUILDING.md
├── CHANGELOG.md
├── CODE-OF-CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTORS
├── Dockerfile
├── GNUmakefile
├── GOVERNANCE.md
├── LICENSE
├── README.md
├── bin/
│ └── .keep
├── builder/
│ ├── ar.go
│ ├── bdwgc.go
│ ├── build.go
│ ├── builder_test.go
│ ├── buildid.go
│ ├── builtins.go
│ ├── cc.go
│ ├── cc1as.cpp
│ ├── cc1as.h
│ ├── cc_test.go
│ ├── clang.cpp
│ ├── commands.go
│ ├── config.go
│ ├── darwin-libsystem.go
│ ├── elfpatch.go
│ ├── error.go
│ ├── esp.go
│ ├── jobs.go
│ ├── library.go
│ ├── lld.cpp
│ ├── mingw-w64.go
│ ├── musl.go
│ ├── nrfutil.go
│ ├── objcopy.go
│ ├── picolibc.go
│ ├── size-report.go
│ ├── size-report.html
│ ├── sizes.go
│ ├── sizes_test.go
│ ├── tools-builtin.go
│ ├── tools-external.go
│ ├── tools.go
│ ├── uf2.go
│ ├── wasilibc.go
│ └── wasmbuiltins.go
├── cgo/
│ ├── cgo.go
│ ├── cgo_go122.go
│ ├── cgo_test.go
│ ├── const.go
│ ├── const_test.go
│ ├── libclang.go
│ ├── libclang_config_llvm15.go
│ ├── libclang_config_llvm16.go
│ ├── libclang_config_llvm17.go
│ ├── libclang_config_llvm18.go
│ ├── libclang_config_llvm19.go
│ ├── libclang_config_llvm20.go
│ ├── libclang_stubs.c
│ ├── security.go
│ ├── security_test.go
│ ├── sync.go
│ └── testdata/
│ ├── basic.go
│ ├── basic.out.go
│ ├── const.go
│ ├── const.out.go
│ ├── errors.go
│ ├── errors.out.go
│ ├── flags.go
│ ├── flags.out.go
│ ├── include/
│ │ └── foo.h
│ ├── symbols.go
│ ├── symbols.out.go
│ ├── types.go
│ └── types.out.go
├── colorwriter.go
├── compileopts/
│ ├── config.go
│ ├── options.go
│ ├── options_test.go
│ ├── target.go
│ └── target_test.go
├── compiler/
│ ├── alias.go
│ ├── asserts.go
│ ├── atomic.go
│ ├── calls.go
│ ├── channel.go
│ ├── compiler.go
│ ├── compiler_test.go
│ ├── defer.go
│ ├── errors.go
│ ├── func.go
│ ├── gc.go
│ ├── goroutine.go
│ ├── inlineasm.go
│ ├── interface.go
│ ├── interrupt.go
│ ├── intrinsics.go
│ ├── ircheck/
│ │ ├── check.go
│ │ └── errors.go
│ ├── llvm.go
│ ├── llvmutil/
│ │ └── llvm.go
│ ├── map.go
│ ├── sizes.go
│ ├── symbol.go
│ ├── syscall.go
│ ├── testdata/
│ │ ├── basic.go
│ │ ├── basic.ll
│ │ ├── channel.go
│ │ ├── channel.ll
│ │ ├── defer-cortex-m-qemu.ll
│ │ ├── defer.go
│ │ ├── errors.go
│ │ ├── float.go
│ │ ├── float.ll
│ │ ├── func.go
│ │ ├── func.ll
│ │ ├── gc.go
│ │ ├── gc.ll
│ │ ├── generics.go
│ │ ├── generics.ll
│ │ ├── go1.20.go
│ │ ├── go1.20.ll
│ │ ├── go1.21.go
│ │ ├── go1.21.ll
│ │ ├── goroutine-cortex-m-qemu-tasks.ll
│ │ ├── goroutine-wasm-asyncify.ll
│ │ ├── goroutine.go
│ │ ├── interface.go
│ │ ├── interface.ll
│ │ ├── pointer.go
│ │ ├── pointer.ll
│ │ ├── pragma.go
│ │ ├── pragma.ll
│ │ ├── slice.go
│ │ ├── slice.ll
│ │ ├── string.go
│ │ ├── string.ll
│ │ ├── zeromap.go
│ │ └── zeromap.ll
│ └── volatile.go
├── corpus_test.go
├── diagnostics/
│ └── diagnostics.go
├── diff.go
├── docs/
│ ├── GNUmakefile
│ ├── conf.py
│ ├── index.rst
│ ├── make.bat
│ └── moved.rst
├── errors_test.go
├── flake.nix
├── go.mod
├── go.sum
├── goenv/
│ ├── goenv.go
│ ├── tools-builtin.go
│ ├── version.go
│ └── version_test.go
├── hooks/
│ ├── README.md
│ └── post_checkout
├── internal/
│ ├── tools/
│ │ ├── go.mod
│ │ ├── go.sum
│ │ └── tools.go
│ └── wasm-tools/
│ ├── README.md
│ ├── go.mod
│ ├── go.sum
│ └── tools.go
├── interp/
│ ├── README.md
│ ├── compiler.go
│ ├── errors.go
│ ├── interp.go
│ ├── interp_test.go
│ ├── interpreter.go
│ ├── memory.go
│ └── testdata/
│ ├── alloc.ll
│ ├── alloc.out.ll
│ ├── basic.ll
│ ├── basic.out.ll
│ ├── consteval.ll
│ ├── consteval.out.ll
│ ├── interface.ll
│ ├── interface.out.ll
│ ├── phi.ll
│ ├── phi.out.ll
│ ├── revert.ll
│ ├── revert.out.ll
│ ├── slice-copy.ll
│ └── slice-copy.out.ll
├── lib/
│ └── picolibc-stdio.c
├── loader/
│ ├── errors.go
│ ├── goroot.go
│ ├── list.go
│ ├── loader.go
│ ├── loader_go122.go
│ └── ssa.go
├── main.go
├── main_test.go
├── misspell.csv
├── monitor.go
├── monitor_test.go
├── revive.toml
├── src/
│ ├── crypto/
│ │ ├── internal/
│ │ │ └── boring/
│ │ │ └── sig/
│ │ │ └── sig_other.go
│ │ ├── rand/
│ │ │ ├── rand.go
│ │ │ ├── rand_arc4random.go
│ │ │ ├── rand_baremetal.go
│ │ │ ├── rand_urandom.go
│ │ │ ├── rand_windows.go
│ │ │ └── util.go
│ │ ├── tls/
│ │ │ ├── common.go
│ │ │ ├── ticket.go
│ │ │ └── tls.go
│ │ └── x509/
│ │ └── internal/
│ │ └── macos/
│ │ └── macos.go
│ ├── device/
│ │ ├── arm/
│ │ │ ├── arm.go
│ │ │ ├── cortexm.S
│ │ │ ├── interrupts.c
│ │ │ ├── scb.go
│ │ │ └── semihosting.go
│ │ ├── arm64/
│ │ │ └── arm64.go
│ │ ├── asm.go
│ │ ├── esp/
│ │ │ ├── esp32.S
│ │ │ ├── esp32c3.S
│ │ │ └── esp8266.S
│ │ ├── gba/
│ │ │ └── gba.go
│ │ ├── nrf/
│ │ │ └── README.markdown
│ │ ├── riscv/
│ │ │ ├── csr.go
│ │ │ ├── handleinterrupt.S
│ │ │ ├── riscv.go
│ │ │ └── start.S
│ │ └── tkey/
│ │ └── tkey.go
│ ├── examples/
│ │ ├── adc/
│ │ │ └── adc.go
│ │ ├── bench-goro/
│ │ │ └── bench.go
│ │ ├── blinkm/
│ │ │ └── blinkm.go
│ │ ├── blinky1/
│ │ │ └── blinky1.go
│ │ ├── blinky2/
│ │ │ └── blinky2.go
│ │ ├── button/
│ │ │ └── button.go
│ │ ├── button2/
│ │ │ └── button2.go
│ │ ├── can/
│ │ │ ├── feather-m4-can.go
│ │ │ └── main.go
│ │ ├── caninterrupt/
│ │ │ ├── feather-m4-can.go
│ │ │ └── main.go
│ │ ├── dac/
│ │ │ ├── circuitplay_express.go
│ │ │ ├── dac.go
│ │ │ └── pyportal.go
│ │ ├── device-id/
│ │ │ └── main.go
│ │ ├── echo/
│ │ │ └── echo.go
│ │ ├── echo2/
│ │ │ └── echo2.go
│ │ ├── empty/
│ │ │ └── main.go
│ │ ├── flash/
│ │ │ └── main.go
│ │ ├── gba-display/
│ │ │ └── gba-display.go
│ │ ├── hello-wasm-unknown/
│ │ │ └── main.go
│ │ ├── hid-joystick/
│ │ │ └── main.go
│ │ ├── hid-keyboard/
│ │ │ └── main.go
│ │ ├── hid-mouse/
│ │ │ └── main.go
│ │ ├── i2c-target/
│ │ │ ├── main.go
│ │ │ ├── main_feather_nrf52840.go
│ │ │ └── main_feather_rp2040.go
│ │ ├── i2s/
│ │ │ └── i2s.go
│ │ ├── machinetest/
│ │ │ └── machinetest.go
│ │ ├── mcp3008/
│ │ │ └── mcp3008.go
│ │ ├── memstats/
│ │ │ └── memstats.go
│ │ ├── microbit-blink/
│ │ │ └── microbit-blink.go
│ │ ├── pdm/
│ │ │ └── pdm.go
│ │ ├── pininterrupt/
│ │ │ ├── arduino.go
│ │ │ ├── circuitplay-express.go
│ │ │ ├── pca10040.go
│ │ │ ├── pininterrupt.go
│ │ │ ├── stm32.go
│ │ │ └── wioterminal.go
│ │ ├── pwm/
│ │ │ ├── arduino-mega1280.go
│ │ │ ├── arduino.go
│ │ │ ├── bluepill.go
│ │ │ ├── feather-m4.go
│ │ │ ├── itsybitsy-m0.go
│ │ │ ├── itsybitsy-m4.go
│ │ │ ├── nucleo-f722ze.go
│ │ │ ├── nucleo-l031k6.go
│ │ │ ├── nucleo-l432kc.go
│ │ │ ├── nucleo-l552ze.go
│ │ │ ├── pico.go
│ │ │ ├── pwm.go
│ │ │ └── stm32f4disco.go
│ │ ├── ram-func/
│ │ │ └── main.go
│ │ ├── rand/
│ │ │ └── main.go
│ │ ├── rtcinterrupt/
│ │ │ └── rtcinterrupt.go
│ │ ├── serial/
│ │ │ └── serial.go
│ │ ├── systick/
│ │ │ ├── README.md
│ │ │ └── systick.go
│ │ ├── temp/
│ │ │ └── temp.go
│ │ ├── time-offset/
│ │ │ └── time-offset.go
│ │ ├── uart/
│ │ │ └── uart.go
│ │ ├── usb-midi/
│ │ │ └── main.go
│ │ ├── usb-storage/
│ │ │ └── main.go
│ │ ├── wasm/
│ │ │ ├── .gitignore
│ │ │ ├── GNUmakefile
│ │ │ ├── README.md
│ │ │ ├── callback/
│ │ │ │ ├── index.html
│ │ │ │ ├── wasm.go
│ │ │ │ └── wasm.js
│ │ │ ├── export/
│ │ │ │ ├── index.html
│ │ │ │ ├── wasm.go
│ │ │ │ └── wasm.js
│ │ │ ├── invoke/
│ │ │ │ ├── index.html
│ │ │ │ ├── wasm.go
│ │ │ │ └── wasm.js
│ │ │ ├── main/
│ │ │ │ ├── README.md
│ │ │ │ ├── index.html
│ │ │ │ └── main.go
│ │ │ ├── server.go
│ │ │ └── slices/
│ │ │ ├── index.html
│ │ │ ├── wasm.go
│ │ │ └── wasm.js
│ │ └── watchdog/
│ │ └── main.go
│ ├── internal/
│ │ ├── abi/
│ │ │ ├── abi.go
│ │ │ ├── escape.go
│ │ │ ├── funcpc.go
│ │ │ └── type.go
│ │ ├── binary/
│ │ │ └── binary.go
│ │ ├── bytealg/
│ │ │ └── bytealg.go
│ │ ├── cm/
│ │ │ ├── abi.go
│ │ │ ├── case.go
│ │ │ ├── docs.go
│ │ │ ├── empty.s
│ │ │ ├── error.go
│ │ │ ├── error.wasm.go
│ │ │ ├── future.go
│ │ │ ├── hostlayout_go122.go
│ │ │ ├── hostlayout_go123.go
│ │ │ ├── list.go
│ │ │ ├── option.go
│ │ │ ├── resource.go
│ │ │ ├── result.go
│ │ │ ├── stream.go
│ │ │ ├── tuple.go
│ │ │ └── variant.go
│ │ ├── futex/
│ │ │ ├── futex.go
│ │ │ ├── futex_darwin.c
│ │ │ └── futex_linux.c
│ │ ├── fuzz/
│ │ │ └── fuzz.go
│ │ ├── gclayout/
│ │ │ └── gclayout.go
│ │ ├── reflectlite/
│ │ │ ├── deepequal.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── strconv.go
│ │ │ ├── swapper.go
│ │ │ ├── type.go
│ │ │ ├── value.go
│ │ │ └── visiblefields.go
│ │ ├── syscall/
│ │ │ └── unix/
│ │ │ ├── constants.go
│ │ │ ├── eaccess.go
│ │ │ └── getrandom.go
│ │ ├── task/
│ │ │ ├── atomic-cooperative.go
│ │ │ ├── atomic-preemptive.go
│ │ │ ├── darwin.go
│ │ │ ├── futex-cooperative.go
│ │ │ ├── futex-cores.go
│ │ │ ├── futex-threads.go
│ │ │ ├── gc_stack_chain.go
│ │ │ ├── gc_stack_noop.go
│ │ │ ├── linux.go
│ │ │ ├── mutex-cooperative.go
│ │ │ ├── mutex-preemptive.go
│ │ │ ├── pmutex-cooperative.go
│ │ │ ├── pmutex-preemptive.go
│ │ │ ├── queue.go
│ │ │ ├── semaphore.go
│ │ │ ├── task.go
│ │ │ ├── task_asyncify.go
│ │ │ ├── task_asyncify_wasm.S
│ │ │ ├── task_none.go
│ │ │ ├── task_stack.go
│ │ │ ├── task_stack_386.S
│ │ │ ├── task_stack_386.go
│ │ │ ├── task_stack_amd64.S
│ │ │ ├── task_stack_amd64.go
│ │ │ ├── task_stack_amd64_windows.S
│ │ │ ├── task_stack_amd64_windows.go
│ │ │ ├── task_stack_arm.S
│ │ │ ├── task_stack_arm.go
│ │ │ ├── task_stack_arm64.S
│ │ │ ├── task_stack_arm64.go
│ │ │ ├── task_stack_avr.S
│ │ │ ├── task_stack_avr.go
│ │ │ ├── task_stack_cortexm.S
│ │ │ ├── task_stack_cortexm.c
│ │ │ ├── task_stack_cortexm.go
│ │ │ ├── task_stack_esp32.S
│ │ │ ├── task_stack_esp32.go
│ │ │ ├── task_stack_esp8266.S
│ │ │ ├── task_stack_esp8266.go
│ │ │ ├── task_stack_mipsx.S
│ │ │ ├── task_stack_mipsx.go
│ │ │ ├── task_stack_multicore.go
│ │ │ ├── task_stack_tinygoriscv.S
│ │ │ ├── task_stack_tinygoriscv.go
│ │ │ ├── task_stack_unicore.go
│ │ │ ├── task_threads.c
│ │ │ └── task_threads.go
│ │ └── wasi/
│ │ ├── cli/
│ │ │ └── v0.2.0/
│ │ │ ├── command/
│ │ │ │ └── command.wit.go
│ │ │ ├── environment/
│ │ │ │ ├── empty.s
│ │ │ │ ├── environment.wasm.go
│ │ │ │ └── environment.wit.go
│ │ │ ├── exit/
│ │ │ │ ├── empty.s
│ │ │ │ ├── exit.wasm.go
│ │ │ │ └── exit.wit.go
│ │ │ ├── run/
│ │ │ │ ├── empty.s
│ │ │ │ ├── run.exports.go
│ │ │ │ ├── run.wasm.go
│ │ │ │ └── run.wit.go
│ │ │ ├── stderr/
│ │ │ │ ├── empty.s
│ │ │ │ ├── stderr.wasm.go
│ │ │ │ └── stderr.wit.go
│ │ │ ├── stdin/
│ │ │ │ ├── empty.s
│ │ │ │ ├── stdin.wasm.go
│ │ │ │ └── stdin.wit.go
│ │ │ ├── stdout/
│ │ │ │ ├── empty.s
│ │ │ │ ├── stdout.wasm.go
│ │ │ │ └── stdout.wit.go
│ │ │ ├── terminal-input/
│ │ │ │ ├── empty.s
│ │ │ │ ├── terminal-input.wasm.go
│ │ │ │ └── terminal-input.wit.go
│ │ │ ├── terminal-output/
│ │ │ │ ├── empty.s
│ │ │ │ ├── terminal-output.wasm.go
│ │ │ │ └── terminal-output.wit.go
│ │ │ ├── terminal-stderr/
│ │ │ │ ├── empty.s
│ │ │ │ ├── terminal-stderr.wasm.go
│ │ │ │ └── terminal-stderr.wit.go
│ │ │ ├── terminal-stdin/
│ │ │ │ ├── empty.s
│ │ │ │ ├── terminal-stdin.wasm.go
│ │ │ │ └── terminal-stdin.wit.go
│ │ │ └── terminal-stdout/
│ │ │ ├── empty.s
│ │ │ ├── terminal-stdout.wasm.go
│ │ │ └── terminal-stdout.wit.go
│ │ ├── clocks/
│ │ │ └── v0.2.0/
│ │ │ ├── monotonic-clock/
│ │ │ │ ├── empty.s
│ │ │ │ ├── monotonic-clock.wasm.go
│ │ │ │ └── monotonic-clock.wit.go
│ │ │ └── wall-clock/
│ │ │ ├── empty.s
│ │ │ ├── wall-clock.wasm.go
│ │ │ └── wall-clock.wit.go
│ │ ├── filesystem/
│ │ │ └── v0.2.0/
│ │ │ ├── preopens/
│ │ │ │ ├── empty.s
│ │ │ │ ├── preopens.wasm.go
│ │ │ │ └── preopens.wit.go
│ │ │ └── types/
│ │ │ ├── abi.go
│ │ │ ├── empty.s
│ │ │ ├── types.wasm.go
│ │ │ └── types.wit.go
│ │ ├── io/
│ │ │ └── v0.2.0/
│ │ │ ├── error/
│ │ │ │ ├── empty.s
│ │ │ │ ├── error.wasm.go
│ │ │ │ └── error.wit.go
│ │ │ ├── poll/
│ │ │ │ ├── empty.s
│ │ │ │ ├── poll.wasm.go
│ │ │ │ └── poll.wit.go
│ │ │ └── streams/
│ │ │ ├── empty.s
│ │ │ ├── streams.wasm.go
│ │ │ └── streams.wit.go
│ │ ├── random/
│ │ │ └── v0.2.0/
│ │ │ ├── insecure/
│ │ │ │ ├── empty.s
│ │ │ │ ├── insecure.wasm.go
│ │ │ │ └── insecure.wit.go
│ │ │ ├── insecure-seed/
│ │ │ │ ├── empty.s
│ │ │ │ ├── insecure-seed.wasm.go
│ │ │ │ └── insecure-seed.wit.go
│ │ │ └── random/
│ │ │ ├── empty.s
│ │ │ ├── random.wasm.go
│ │ │ └── random.wit.go
│ │ └── sockets/
│ │ └── v0.2.0/
│ │ ├── instance-network/
│ │ │ ├── empty.s
│ │ │ ├── instance-network.wasm.go
│ │ │ └── instance-network.wit.go
│ │ ├── ip-name-lookup/
│ │ │ ├── abi.go
│ │ │ ├── empty.s
│ │ │ ├── ip-name-lookup.wasm.go
│ │ │ └── ip-name-lookup.wit.go
│ │ ├── network/
│ │ │ ├── abi.go
│ │ │ ├── empty.s
│ │ │ ├── network.wasm.go
│ │ │ └── network.wit.go
│ │ ├── tcp/
│ │ │ ├── abi.go
│ │ │ ├── empty.s
│ │ │ ├── tcp.wasm.go
│ │ │ └── tcp.wit.go
│ │ ├── tcp-create-socket/
│ │ │ ├── empty.s
│ │ │ ├── tcp-create-socket.wasm.go
│ │ │ └── tcp-create-socket.wit.go
│ │ ├── udp/
│ │ │ ├── abi.go
│ │ │ ├── empty.s
│ │ │ ├── udp.wasm.go
│ │ │ └── udp.wit.go
│ │ └── udp-create-socket/
│ │ ├── empty.s
│ │ ├── udp-create-socket.wasm.go
│ │ └── udp-create-socket.wit.go
│ ├── machine/
│ │ ├── adc.go
│ │ ├── board_adafruit-esp32-feather-v2.go
│ │ ├── board_ae_rp2040.go
│ │ ├── board_arduino.go
│ │ ├── board_arduino_leonardo.go
│ │ ├── board_arduino_mega1280.go
│ │ ├── board_arduino_mega2560.go
│ │ ├── board_arduino_mkr1000.go
│ │ ├── board_arduino_mkrwifi1010.go
│ │ ├── board_arduino_nano.go
│ │ ├── board_arduino_nano33.go
│ │ ├── board_arduino_zero.go
│ │ ├── board_atmega328p.go
│ │ ├── board_atmega328pb.go
│ │ ├── board_atsamd21.go
│ │ ├── board_atsame54-xpro.go
│ │ ├── board_badger2040-w.go
│ │ ├── board_badger2040.go
│ │ ├── board_bluemicro840.go
│ │ ├── board_bluepill.go
│ │ ├── board_btt_skr_pico.go
│ │ ├── board_challenger_rp2040.go
│ │ ├── board_circuitplay_bluefruit.go
│ │ ├── board_circuitplay_express.go
│ │ ├── board_clue_alpha.go
│ │ ├── board_digispark.go
│ │ ├── board_elecrow-rp2040-w5.go
│ │ ├── board_elecrow-rp2350-w5.go
│ │ ├── board_esp-c3-32s-kit.go
│ │ ├── board_esp32-c3-devkit-rust-1.go
│ │ ├── board_esp32-coreboard-v2.go
│ │ ├── board_esp32c3-12f.go
│ │ ├── board_esp32c3-supermini.go
│ │ ├── board_fe310.go
│ │ ├── board_feather-m0-express.go
│ │ ├── board_feather-m0.go
│ │ ├── board_feather-m4-can.go
│ │ ├── board_feather-m4.go
│ │ ├── board_feather-nrf52840-sense.go
│ │ ├── board_feather-nrf52840.go
│ │ ├── board_feather-stm32f405.go
│ │ ├── board_feather_rp2040.go
│ │ ├── board_gemma-m0.go
│ │ ├── board_gnse.go
│ │ ├── board_gopher-arcade.go
│ │ ├── board_gopher-badge.go
│ │ ├── board_grandcentral-m4.go
│ │ ├── board_hifive1b.go
│ │ ├── board_hifive1b_baremetal.go
│ │ ├── board_hw-651.go
│ │ ├── board_itsybitsy-m0.go
│ │ ├── board_itsybitsy-m4.go
│ │ ├── board_itsybitsy-nrf52840.go
│ │ ├── board_k210.go
│ │ ├── board_kb2040.go
│ │ ├── board_lgt92.go
│ │ ├── board_lorae5.go
│ │ ├── board_m5paper.go
│ │ ├── board_m5stack.go
│ │ ├── board_m5stack_core2.go
│ │ ├── board_m5stamp_c3.go
│ │ ├── board_m5stick_c.go
│ │ ├── board_macropad-rp2040.go
│ │ ├── board_maixbit.go
│ │ ├── board_maixbit_baremetal.go
│ │ ├── board_makerfabs-esp32c3spi35.go
│ │ ├── board_matrixportal-m4.go
│ │ ├── board_mch2022.go
│ │ ├── board_mdbt50qrx.go
│ │ ├── board_metro-m4-airlift.go
│ │ ├── board_metro_rp2350.go
│ │ ├── board_microbit-v2.go
│ │ ├── board_microbit.go
│ │ ├── board_mksnanov3.go
│ │ ├── board_nano-33-ble.go
│ │ ├── board_nano-rp2040.go
│ │ ├── board_nicenano.go
│ │ ├── board_nodemcu.go
│ │ ├── board_nrf51.go
│ │ ├── board_nrf52840-mdk-usb-dongle.go
│ │ ├── board_nrf52840-mdk.go
│ │ ├── board_nrf52840.go
│ │ ├── board_nrf52840_generic.go
│ │ ├── board_nucleof103rb.go
│ │ ├── board_nucleof722ze.go
│ │ ├── board_nucleol031k6.go
│ │ ├── board_nucleol432kc.go
│ │ ├── board_nucleol476rg.go
│ │ ├── board_nucleol552ze.go
│ │ ├── board_nucleowl55jc.go
│ │ ├── board_p1am-100.go
│ │ ├── board_particle_argon.go
│ │ ├── board_particle_boron.go
│ │ ├── board_particle_xenon.go
│ │ ├── board_pca10031.go
│ │ ├── board_pca10040.go
│ │ ├── board_pca10056.go
│ │ ├── board_pca10059.go
│ │ ├── board_pga2350.go
│ │ ├── board_pico.go
│ │ ├── board_pico2.go
│ │ ├── board_pico2_ice.go
│ │ ├── board_pico_plus2.go
│ │ ├── board_pinetime.go
│ │ ├── board_pybadge.go
│ │ ├── board_pygamer.go
│ │ ├── board_pyportal.go
│ │ ├── board_qtpy.go
│ │ ├── board_qtpy_esp32c3.go
│ │ ├── board_qtpy_rp2040.go
│ │ ├── board_rak4631.go
│ │ ├── board_reelboard.go
│ │ ├── board_stm32f469disco.go
│ │ ├── board_stm32f4disco.go
│ │ ├── board_stm32l0x1.go
│ │ ├── board_swan.go
│ │ ├── board_teensy36.go
│ │ ├── board_teensy40.go
│ │ ├── board_teensy41.go
│ │ ├── board_thingplus_rp2040.go
│ │ ├── board_thumby.go
│ │ ├── board_tiny2350.go
│ │ ├── board_trinket.go
│ │ ├── board_trinkey_qt2040.go
│ │ ├── board_tufty2040.go
│ │ ├── board_waveshare-rp2040-zero.go
│ │ ├── board_waveshare_rp2040_tiny.go
│ │ ├── board_wioterminal.go
│ │ ├── board_x9pro.go
│ │ ├── board_xiao-ble.go
│ │ ├── board_xiao-esp32c3.go
│ │ ├── board_xiao-esp32s3.go
│ │ ├── board_xiao-rp2040.go
│ │ ├── board_xiao.go
│ │ ├── buffer.go
│ │ ├── buffer_atmega.go
│ │ ├── buffer_generic.go
│ │ ├── deviceid.go
│ │ ├── flash.go
│ │ ├── i2c.go
│ │ ├── i2s.go
│ │ ├── machine.go
│ │ ├── machine_atmega.go
│ │ ├── machine_atmega1280.go
│ │ ├── machine_atmega1284p.go
│ │ ├── machine_atmega2560.go
│ │ ├── machine_atmega328.go
│ │ ├── machine_atmega328p.go
│ │ ├── machine_atmega328p_simulator.go
│ │ ├── machine_atmega328pb.go
│ │ ├── machine_atmega32u4.go
│ │ ├── machine_atsam.go
│ │ ├── machine_atsamd21.go
│ │ ├── machine_atsamd21_simulator.go
│ │ ├── machine_atsamd21_usb.go
│ │ ├── machine_atsamd21e18.go
│ │ ├── machine_atsamd21g18.go
│ │ ├── machine_atsamd51.go
│ │ ├── machine_atsamd51_usb.go
│ │ ├── machine_atsamd51g19.go
│ │ ├── machine_atsamd51j19.go
│ │ ├── machine_atsamd51j20.go
│ │ ├── machine_atsamd51p19.go
│ │ ├── machine_atsamd51p20.go
│ │ ├── machine_atsame51j19.go
│ │ ├── machine_atsame54p20.go
│ │ ├── machine_atsame5x_can.go
│ │ ├── machine_attiny1616.go
│ │ ├── machine_attiny85.go
│ │ ├── machine_avr.go
│ │ ├── machine_avrtiny.go
│ │ ├── machine_cortexm.go
│ │ ├── machine_esp32.go
│ │ ├── machine_esp32_i2c.go
│ │ ├── machine_esp32c3.go
│ │ ├── machine_esp32c3_i2c.go
│ │ ├── machine_esp32c3_spi.go
│ │ ├── machine_esp32s3.go
│ │ ├── machine_esp8266.go
│ │ ├── machine_fe310.go
│ │ ├── machine_fe310_simulator.go
│ │ ├── machine_gameboyadvance.go
│ │ ├── machine_generic.go
│ │ ├── machine_generic_peripherals.go
│ │ ├── machine_k210.go
│ │ ├── machine_mimxrt1062.go
│ │ ├── machine_mimxrt1062_i2c.go
│ │ ├── machine_mimxrt1062_spi.go
│ │ ├── machine_mimxrt1062_uart.go
│ │ ├── machine_nrf.go
│ │ ├── machine_nrf51.go
│ │ ├── machine_nrf51_simulator.go
│ │ ├── machine_nrf52.go
│ │ ├── machine_nrf52833.go
│ │ ├── machine_nrf52840.go
│ │ ├── machine_nrf52840_enter_bootloader.go
│ │ ├── machine_nrf52840_lfxtal_false.go
│ │ ├── machine_nrf52840_lfxtal_true.go
│ │ ├── machine_nrf52840_simulator.go
│ │ ├── machine_nrf52840_usb.go
│ │ ├── machine_nrf52840_usb_reset_bossa.go
│ │ ├── machine_nrf52840_usb_reset_none.go
│ │ ├── machine_nrf52840_usb_reset_uf2.go
│ │ ├── machine_nrf528xx.go
│ │ ├── machine_nrf52xxx.go
│ │ ├── machine_nrf5x.go
│ │ ├── machine_nrf_bare.go
│ │ ├── machine_nrf_sd.go
│ │ ├── machine_nxpmk66f18.go
│ │ ├── machine_nxpmk66f18_uart.go
│ │ ├── machine_rp2.go
│ │ ├── machine_rp2040_rom.go
│ │ ├── machine_rp2040_rtc.go
│ │ ├── machine_rp2040_simulator.go
│ │ ├── machine_rp2040_usb.go
│ │ ├── machine_rp2040_usb_fix_usb_device_enumeration.go
│ │ ├── machine_rp2350_rom.go
│ │ ├── machine_rp2350_usb.go
│ │ ├── machine_rp2_2040.go
│ │ ├── machine_rp2_2350.go
│ │ ├── machine_rp2_2350a.go
│ │ ├── machine_rp2_2350b.go
│ │ ├── machine_rp2_adc.go
│ │ ├── machine_rp2_clocks.go
│ │ ├── machine_rp2_flash.go
│ │ ├── machine_rp2_gpio.go
│ │ ├── machine_rp2_i2c.go
│ │ ├── machine_rp2_pins.go
│ │ ├── machine_rp2_pll.go
│ │ ├── machine_rp2_pwm.go
│ │ ├── machine_rp2_resets.go
│ │ ├── machine_rp2_rng.go
│ │ ├── machine_rp2_spi.go
│ │ ├── machine_rp2_sync.go
│ │ ├── machine_rp2_timer.go
│ │ ├── machine_rp2_uart.go
│ │ ├── machine_rp2_usb.go
│ │ ├── machine_rp2_watchdog.go
│ │ ├── machine_rp2_xosc.go
│ │ ├── machine_stm32.go
│ │ ├── machine_stm32_adc_f1.go
│ │ ├── machine_stm32_adc_f4.go
│ │ ├── machine_stm32_exti_afio.go
│ │ ├── machine_stm32_exti_exti.go
│ │ ├── machine_stm32_exti_syscfg.go
│ │ ├── machine_stm32_exti_syscfg_noenable.go
│ │ ├── machine_stm32_flash.go
│ │ ├── machine_stm32_gpio_reva.go
│ │ ├── machine_stm32_gpio_revb.go
│ │ ├── machine_stm32_gpio_revb_mp.go
│ │ ├── machine_stm32_i2c_reva.go
│ │ ├── machine_stm32_i2c_revb.go
│ │ ├── machine_stm32_iwdg.go
│ │ ├── machine_stm32_moder_gpio.go
│ │ ├── machine_stm32_rng.go
│ │ ├── machine_stm32_spi.go
│ │ ├── machine_stm32_tim.go
│ │ ├── machine_stm32_tim_moder.go
│ │ ├── machine_stm32_uart.go
│ │ ├── machine_stm32f103.go
│ │ ├── machine_stm32f4.go
│ │ ├── machine_stm32f40x.go
│ │ ├── machine_stm32f469.go
│ │ ├── machine_stm32f7.go
│ │ ├── machine_stm32f7x2.go
│ │ ├── machine_stm32l0.go
│ │ ├── machine_stm32l0x1.go
│ │ ├── machine_stm32l0x2.go
│ │ ├── machine_stm32l4.go
│ │ ├── machine_stm32l4x2.go
│ │ ├── machine_stm32l4x5.go
│ │ ├── machine_stm32l4x6.go
│ │ ├── machine_stm32l5.go
│ │ ├── machine_stm32l5x2.go
│ │ ├── machine_stm32wlx.go
│ │ ├── machine_tkey.go
│ │ ├── machine_tkey_rom.go
│ │ ├── pdm.go
│ │ ├── pwm.go
│ │ ├── runtime.go
│ │ ├── serial-none.go
│ │ ├── serial-rtt.go
│ │ ├── serial-uart.go
│ │ ├── serial-usb.go
│ │ ├── serial.go
│ │ ├── spi.go
│ │ ├── spi_tx.go
│ │ ├── uart.go
│ │ ├── usb/
│ │ │ ├── adc/
│ │ │ │ ├── doc.go
│ │ │ │ └── midi/
│ │ │ │ ├── buffer.go
│ │ │ │ ├── messages.go
│ │ │ │ ├── midi.go
│ │ │ │ └── notes.go
│ │ │ ├── cdc/
│ │ │ │ ├── buffer.go
│ │ │ │ ├── cdc.go
│ │ │ │ ├── doc.go
│ │ │ │ └── usbcdc.go
│ │ │ ├── config.go
│ │ │ ├── descriptor/
│ │ │ │ ├── cdc.go
│ │ │ │ ├── classspecific.go
│ │ │ │ ├── configuration.go
│ │ │ │ ├── descriptor.go
│ │ │ │ ├── device.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── endpoint.go
│ │ │ │ ├── hid.go
│ │ │ │ ├── hidreport.go
│ │ │ │ ├── interface.go
│ │ │ │ ├── interfaceassociation.go
│ │ │ │ ├── joystick.go
│ │ │ │ ├── midi.go
│ │ │ │ └── msc.go
│ │ │ ├── doc.go
│ │ │ ├── hid/
│ │ │ │ ├── buffer.go
│ │ │ │ ├── doc.go
│ │ │ │ ├── hid.go
│ │ │ │ ├── joystick/
│ │ │ │ │ ├── joystick.go
│ │ │ │ │ └── state.go
│ │ │ │ ├── keyboard/
│ │ │ │ │ ├── keyboard.go
│ │ │ │ │ └── keycode.go
│ │ │ │ └── mouse/
│ │ │ │ └── mouse.go
│ │ │ ├── msc/
│ │ │ │ ├── cbw.go
│ │ │ │ ├── csw/
│ │ │ │ │ └── csw.go
│ │ │ │ ├── disk.go
│ │ │ │ ├── msc.go
│ │ │ │ ├── scsi/
│ │ │ │ │ └── scsi.go
│ │ │ │ ├── scsi.go
│ │ │ │ ├── scsi_inquiry.go
│ │ │ │ ├── scsi_readwrite.go
│ │ │ │ ├── scsi_unmap.go
│ │ │ │ └── setup.go
│ │ │ └── usb.go
│ │ ├── usb.go
│ │ ├── virt.go
│ │ └── watchdog.go
│ ├── os/
│ │ ├── deadline_test.go
│ │ ├── dir.go
│ │ ├── dir_darwin.go
│ │ ├── dir_other.go
│ │ ├── dir_test.go
│ │ ├── dir_unix.go
│ │ ├── dir_wasi.go
│ │ ├── dirent_linux.go
│ │ ├── endian_little.go
│ │ ├── env.go
│ │ ├── env_test.go
│ │ ├── env_unix_test.go
│ │ ├── errors.go
│ │ ├── exec/
│ │ │ └── exec.go
│ │ ├── exec.go
│ │ ├── exec_linux.go
│ │ ├── exec_linux_test.go
│ │ ├── exec_other.go
│ │ ├── exec_test.go
│ │ ├── executable_darwin.go
│ │ ├── executable_other.go
│ │ ├── executable_procfs.go
│ │ ├── export_test.go
│ │ ├── export_windows_test.go
│ │ ├── file.go
│ │ ├── file_anyos.go
│ │ ├── file_anyos_test.go
│ │ ├── file_darwin.go
│ │ ├── file_notdarwin.go
│ │ ├── file_other.go
│ │ ├── file_posix.go
│ │ ├── file_unix.go
│ │ ├── file_windows.go
│ │ ├── filesystem.go
│ │ ├── getpagesize_test.go
│ │ ├── os_anyos_test.go
│ │ ├── os_chmod_test.go
│ │ ├── os_hardlink_test.go
│ │ ├── os_symlink_test.go
│ │ ├── os_test.go
│ │ ├── osexec.go
│ │ ├── path.go
│ │ ├── path_test.go
│ │ ├── path_unix.go
│ │ ├── path_windows.go
│ │ ├── path_windows_test.go
│ │ ├── pipe_test.go
│ │ ├── proc.go
│ │ ├── read_test.go
│ │ ├── removeall_noat.go
│ │ ├── removeall_other.go
│ │ ├── removeall_test.go
│ │ ├── seek_unix_bad.go
│ │ ├── stat.go
│ │ ├── stat_darwin.go
│ │ ├── stat_linuxlike.go
│ │ ├── stat_other.go
│ │ ├── stat_test.go
│ │ ├── stat_unix.go
│ │ ├── stat_windows.go
│ │ ├── sys.go
│ │ ├── tempfile.go
│ │ ├── tempfile_test.go
│ │ ├── truncate_test.go
│ │ ├── types.go
│ │ ├── types_anyos.go
│ │ ├── types_unix.go
│ │ └── types_windows.go
│ ├── reflect/
│ │ ├── all_test.go
│ │ ├── benchmark_test.go
│ │ ├── convert_test.go
│ │ ├── deepequal.go
│ │ ├── export_test.go
│ │ ├── internal/
│ │ │ ├── example1/
│ │ │ │ └── example.go
│ │ │ └── example2/
│ │ │ └── example.go
│ │ ├── intw.go
│ │ ├── intw_avr.go
│ │ ├── intw_test.go
│ │ ├── iter.go
│ │ ├── iter_test.go
│ │ ├── makefunc.go
│ │ ├── swapper.go
│ │ ├── tostring_test.go
│ │ ├── type.go
│ │ ├── type_test.go
│ │ ├── value.go
│ │ ├── value_test.go
│ │ ├── visiblefields.go
│ │ └── visiblefields_test.go
│ ├── runtime/
│ │ ├── algorithm.go
│ │ ├── arch-has-returnaddr.go
│ │ ├── arch-no-returnaddr.go
│ │ ├── arch_386.go
│ │ ├── arch_amd64.go
│ │ ├── arch_arm.go
│ │ ├── arch_arm64.go
│ │ ├── arch_avr.go
│ │ ├── arch_cortexm.go
│ │ ├── arch_mips.go
│ │ ├── arch_mipsle.go
│ │ ├── arch_tinygoriscv.go
│ │ ├── arch_tinygoriscv32.go
│ │ ├── arch_tinygoriscv64.go
│ │ ├── arch_tinygowasm.go
│ │ ├── arch_tinygowasm_malloc.go
│ │ ├── arch_xtensa.go
│ │ ├── asm_386.S
│ │ ├── asm_amd64.S
│ │ ├── asm_amd64_windows.S
│ │ ├── asm_arm.S
│ │ ├── asm_arm64.S
│ │ ├── asm_avr.S
│ │ ├── asm_mipsx.S
│ │ ├── asm_riscv.S
│ │ ├── asm_tinygowasm.S
│ │ ├── atomics_critical.go
│ │ ├── baremetal.go
│ │ ├── build_asserts.go
│ │ ├── build_noasserts.go
│ │ ├── cgo/
│ │ │ └── cgo.go
│ │ ├── chan.go
│ │ ├── complex.go
│ │ ├── coro.go
│ │ ├── debug/
│ │ │ ├── debug.go
│ │ │ └── garbage.go
│ │ ├── debug.go
│ │ ├── defer.go
│ │ ├── dynamic_arm64.go
│ │ ├── env.go
│ │ ├── env_unix.go
│ │ ├── env_windows.go
│ │ ├── error.go
│ │ ├── extern.go
│ │ ├── float.go
│ │ ├── gc_blocks.go
│ │ ├── gc_boehm.c
│ │ ├── gc_boehm.go
│ │ ├── gc_conservative.go
│ │ ├── gc_custom.go
│ │ ├── gc_globals.go
│ │ ├── gc_leaking.go
│ │ ├── gc_none.go
│ │ ├── gc_precise.go
│ │ ├── gc_stack_cores.go
│ │ ├── gc_stack_portable.go
│ │ ├── gc_stack_raw.go
│ │ ├── gc_stack_threads.go
│ │ ├── hashmap.go
│ │ ├── hosted.go
│ │ ├── interface.go
│ │ ├── internal/
│ │ │ └── sys/
│ │ │ └── zversion.go
│ │ ├── interrupt/
│ │ │ ├── checkpoint.go
│ │ │ ├── interrupt.go
│ │ │ ├── interrupt_avr.go
│ │ │ ├── interrupt_cortexm.go
│ │ │ ├── interrupt_esp32c3.go
│ │ │ ├── interrupt_gameboyadvance.go
│ │ │ ├── interrupt_k210.go
│ │ │ ├── interrupt_none.go
│ │ │ ├── interrupt_sifive.go
│ │ │ ├── interrupt_tinygoriscv.go
│ │ │ └── interrupt_xtensa.go
│ │ ├── memhash_fnv.go
│ │ ├── memhash_leveldb.go
│ │ ├── memhash_tsip.go
│ │ ├── metrics/
│ │ │ └── metrics.go
│ │ ├── metrics.go
│ │ ├── mstats.go
│ │ ├── nonhosted.go
│ │ ├── os_darwin.c
│ │ ├── os_darwin.go
│ │ ├── os_js.go
│ │ ├── os_linux.go
│ │ ├── os_other.go
│ │ ├── os_wasip1.go
│ │ ├── os_wasip2.go
│ │ ├── os_windows.go
│ │ ├── panic.go
│ │ ├── poll.go
│ │ ├── pprof/
│ │ │ └── pprof.go
│ │ ├── print.go
│ │ ├── proc.go
│ │ ├── rand.go
│ │ ├── rand_hwrng.go
│ │ ├── rand_norng.go
│ │ ├── runtime.go
│ │ ├── runtime_arm7tdmi.go
│ │ ├── runtime_atmega.go
│ │ ├── runtime_atsamd21.go
│ │ ├── runtime_atsamd21e18.go
│ │ ├── runtime_atsamd21g18.go
│ │ ├── runtime_atsamd51.go
│ │ ├── runtime_atsamd51g19.go
│ │ ├── runtime_atsamd51j19.go
│ │ ├── runtime_atsamd51j20.go
│ │ ├── runtime_atsamd51p19.go
│ │ ├── runtime_atsamd51p20.go
│ │ ├── runtime_atsame51j19.go
│ │ ├── runtime_atsame54p20.go
│ │ ├── runtime_atsame5x_can.go
│ │ ├── runtime_attiny.go
│ │ ├── runtime_avr.go
│ │ ├── runtime_avrtiny.go
│ │ ├── runtime_cortexm.go
│ │ ├── runtime_cortexm_abort.go
│ │ ├── runtime_cortexm_hardfault.go
│ │ ├── runtime_cortexm_hardfault_debug.go
│ │ ├── runtime_cortexm_qemu.go
│ │ ├── runtime_esp32.go
│ │ ├── runtime_esp32c3.go
│ │ ├── runtime_esp32s3.go
│ │ ├── runtime_esp32sx.go
│ │ ├── runtime_esp32xx.go
│ │ ├── runtime_esp8266.go
│ │ ├── runtime_fe310.go
│ │ ├── runtime_fe310_baremetal.go
│ │ ├── runtime_fe310_qemu.go
│ │ ├── runtime_k210.go
│ │ ├── runtime_k210_baremetal.go
│ │ ├── runtime_mimxrt1062.go
│ │ ├── runtime_mimxrt1062_clock.go
│ │ ├── runtime_mimxrt1062_mpu.go
│ │ ├── runtime_mimxrt1062_time.go
│ │ ├── runtime_nintendoswitch.S
│ │ ├── runtime_nintendoswitch.go
│ │ ├── runtime_nrf.go
│ │ ├── runtime_nrf52840.go
│ │ ├── runtime_nrf_bare.go
│ │ ├── runtime_nrf_softdevice.go
│ │ ├── runtime_nxpmk66f18.go
│ │ ├── runtime_rp2.go
│ │ ├── runtime_rp2040.go
│ │ ├── runtime_rp2350.go
│ │ ├── runtime_stm32.go
│ │ ├── runtime_stm32_timers.go
│ │ ├── runtime_stm32f103.go
│ │ ├── runtime_stm32f4.go
│ │ ├── runtime_stm32f405.go
│ │ ├── runtime_stm32f407.go
│ │ ├── runtime_stm32f469.go
│ │ ├── runtime_stm32f7x2.go
│ │ ├── runtime_stm32l0.go
│ │ ├── runtime_stm32l0x1.go
│ │ ├── runtime_stm32l0x2.go
│ │ ├── runtime_stm32l4.go
│ │ ├── runtime_stm32l4x2.go
│ │ ├── runtime_stm32l4x5.go
│ │ ├── runtime_stm32l4x6.go
│ │ ├── runtime_stm32l5x2.go
│ │ ├── runtime_stm32wlx.go
│ │ ├── runtime_tinygoriscv.go
│ │ ├── runtime_tinygoriscv64.go
│ │ ├── runtime_tinygoriscv_qemu.go
│ │ ├── runtime_tinygowasm.go
│ │ ├── runtime_tinygowasm_unknown.go
│ │ ├── runtime_tinygowasmp2.go
│ │ ├── runtime_tkey.go
│ │ ├── runtime_tkey_baremetal.go
│ │ ├── runtime_unix.c
│ │ ├── runtime_unix.go
│ │ ├── runtime_wasip1.go
│ │ ├── runtime_wasip2.go
│ │ ├── runtime_wasm_js.go
│ │ ├── runtime_wasm_js_scheduler.go
│ │ ├── runtime_wasm_unknown.go
│ │ ├── runtime_wasmentry.go
│ │ ├── runtime_windows.go
│ │ ├── scheduler.go
│ │ ├── scheduler_cooperative.go
│ │ ├── scheduler_cores.go
│ │ ├── scheduler_none.go
│ │ ├── scheduler_tasks.go
│ │ ├── scheduler_threads.go
│ │ ├── signal.c
│ │ ├── signalstub.go
│ │ ├── slice.go
│ │ ├── stack.go
│ │ ├── string.go
│ │ ├── symtab.go
│ │ ├── sync.go
│ │ ├── synctest.go
│ │ ├── time.go
│ │ ├── time_go122.go
│ │ ├── time_go123.go
│ │ ├── time_nxpmk66f18.go
│ │ ├── trace/
│ │ │ └── trace.go
│ │ ├── volatile/
│ │ │ ├── bitband_nxpmk66f18.go
│ │ │ ├── register.go
│ │ │ └── volatile.go
│ │ ├── wait_other.go
│ │ ├── zero_new_alloc.go
│ │ └── zero_new_alloc_noop.go
│ ├── sync/
│ │ ├── cond.go
│ │ ├── cond_test.go
│ │ ├── doc.go
│ │ ├── map.go
│ │ ├── map_go123.go
│ │ ├── map_test.go
│ │ ├── mutex.go
│ │ ├── mutex_test.go
│ │ ├── once.go
│ │ ├── once_test.go
│ │ ├── oncefunc.go
│ │ ├── oncefunc_test.go
│ │ ├── pool.go
│ │ ├── pool_test.go
│ │ ├── waitgroup.go
│ │ └── waitgroup_test.go
│ ├── syscall/
│ │ ├── env_libc.go
│ │ ├── env_nonhosted.go
│ │ ├── env_wasip2.go
│ │ ├── errno.go
│ │ ├── errno_other.go
│ │ ├── errno_wasilibc.go
│ │ ├── errno_wasip2.go
│ │ ├── file_emulated.go
│ │ ├── file_hosted.go
│ │ ├── libc_wasip2.go
│ │ ├── mmap_unix_test.go
│ │ ├── net.go
│ │ ├── proc_emulated.go
│ │ ├── proc_hosted.go
│ │ ├── str.go
│ │ ├── syscall.go
│ │ ├── syscall_libc.go
│ │ ├── syscall_libc_nintendoswitch.go
│ │ ├── syscall_libc_wasi.go
│ │ ├── syscall_linux.go
│ │ ├── syscall_nonhosted.go
│ │ ├── syscall_unix.go
│ │ └── tables_nonhosted.go
│ ├── testing/
│ │ ├── benchmark.go
│ │ ├── benchmark_test.go
│ │ ├── doc.go
│ │ ├── fuzz.go
│ │ ├── is_baremetal.go
│ │ ├── is_not_baremetal.go
│ │ ├── match.go
│ │ ├── match_test.go
│ │ ├── sub_test.go
│ │ ├── testing.go
│ │ └── testing_test.go
│ ├── tinygo/
│ │ └── runtime.go
│ └── unique/
│ ├── handle.go
│ └── handle_test.go
├── stacksize/
│ ├── dwarf.go
│ └── stacksize.go
├── targets/
│ ├── adafruit-esp32-feather-v2.json
│ ├── ae-rp2040.json
│ ├── arduino-leonardo.json
│ ├── arduino-mega1280.json
│ ├── arduino-mega2560.json
│ ├── arduino-mkr1000.json
│ ├── arduino-mkrwifi1010.json
│ ├── arduino-nano-new.json
│ ├── arduino-nano.json
│ ├── arduino-nano33.json
│ ├── arduino-zero.json
│ ├── arduino.json
│ ├── arm.ld
│ ├── atmega1280.json
│ ├── atmega1284p.json
│ ├── atmega2560.json
│ ├── atmega328p.json
│ ├── atmega328pb.json
│ ├── atmega32u4.json
│ ├── atsamd21.ld
│ ├── atsamd21e18a.json
│ ├── atsamd21g18a.json
│ ├── atsamd51.ld
│ ├── atsamd51g19a.json
│ ├── atsamd51j19a.json
│ ├── atsamd51j20a.json
│ ├── atsamd51j20a.ld
│ ├── atsamd51p19a.json
│ ├── atsamd51p20a.json
│ ├── atsamd51p20a.ld
│ ├── atsame51j19a.json
│ ├── atsame54-xpro.json
│ ├── atsame54p20a.json
│ ├── atsame5xx19.ld
│ ├── atsame5xx20-no-bootloader.ld
│ ├── attiny1616.json
│ ├── attiny85.json
│ ├── avr.S
│ ├── avr.json
│ ├── avr.ld
│ ├── avrtiny.S
│ ├── avrtiny.json
│ ├── avrtiny.ld
│ ├── badger2040-w.json
│ ├── badger2040.json
│ ├── bluemicro840.json
│ ├── bluepill-clone.json
│ ├── bluepill.json
│ ├── btt-skr-pico.json
│ ├── challenger-rp2040.json
│ ├── circuitplay-bluefruit.json
│ ├── circuitplay-express.json
│ ├── clue-alpha.json
│ ├── clue.json
│ ├── cortex-m-qemu.json
│ ├── cortex-m-qemu.s
│ ├── cortex-m.json
│ ├── cortex-m0.json
│ ├── cortex-m0plus.json
│ ├── cortex-m3.json
│ ├── cortex-m33.json
│ ├── cortex-m4.json
│ ├── cortex-m7.json
│ ├── d1mini.json
│ ├── digispark.json
│ ├── elecrow-rp2040.json
│ ├── elecrow-rp2350.json
│ ├── esp-c3-32s-kit.json
│ ├── esp32-c3-devkit-rust-1.json
│ ├── esp32-coreboard-v2.json
│ ├── esp32-mini32.json
│ ├── esp32.json
│ ├── esp32.ld
│ ├── esp32c3-12f.json
│ ├── esp32c3-supermini.json
│ ├── esp32c3.json
│ ├── esp32c3.ld
│ ├── esp32s3.json
│ ├── esp32s3.ld
│ ├── esp8266.json
│ ├── esp8266.ld
│ ├── fe310.json
│ ├── feather-m0-express.json
│ ├── feather-m0.json
│ ├── feather-m4-can.json
│ ├── feather-m4.json
│ ├── feather-nrf52840-sense.json
│ ├── feather-nrf52840.json
│ ├── feather-rp2040-boot-stage2.S
│ ├── feather-rp2040.json
│ ├── feather-stm32f405.json
│ ├── gameboy-advance.json
│ ├── gameboy-advance.ld
│ ├── gameboy-advance.s
│ ├── gemma-m0.json
│ ├── gnse.json
│ ├── gobadge.json
│ ├── gopher-arcade.json
│ ├── gopher-badge.json
│ ├── gopherbot.json
│ ├── gopherbot2.json
│ ├── grandcentral-m4.json
│ ├── hifive1b.json
│ ├── hifive1b.ld
│ ├── hw-651-s110v8.json
│ ├── hw-651.json
│ ├── itsybitsy-m0.json
│ ├── itsybitsy-m4.json
│ ├── itsybitsy-nrf52840.json
│ ├── k210.json
│ ├── kb2040.json
│ ├── lgt92.json
│ ├── lm3s6965.ld
│ ├── lorae5.json
│ ├── m5paper.json
│ ├── m5stack-core2.json
│ ├── m5stack.json
│ ├── m5stamp-c3.json
│ ├── m5stick-c.json
│ ├── macropad-rp2040-boot-stage2.S
│ ├── macropad-rp2040.json
│ ├── maixbit.json
│ ├── maixbit.ld
│ ├── makerfabs-esp32c3spi35.json
│ ├── matrixportal-m4.json
│ ├── mch2022.json
│ ├── mdbt50qrx-uf2.json
│ ├── metro-m4-airlift.json
│ ├── metro-rp2350.json
│ ├── microbit-s110v8.json
│ ├── microbit-v2-s113v7.json
│ ├── microbit-v2-s140v7.json
│ ├── microbit-v2.json
│ ├── microbit.json
│ ├── mimxrt1062-teensy40.ld
│ ├── mksnanov3.json
│ ├── nano-33-ble-s140v6-uf2.json
│ ├── nano-33-ble-s140v7-uf2.json
│ ├── nano-33-ble-s140v7.json
│ ├── nano-33-ble.json
│ ├── nano-33-ble.ld
│ ├── nano-rp2040.json
│ ├── nicenano.json
│ ├── nintendoswitch.json
│ ├── nintendoswitch.ld
│ ├── nintendoswitch.s
│ ├── nodemcu.json
│ ├── nrf51-s110v8.json
│ ├── nrf51-s110v8.ld
│ ├── nrf51.json
│ ├── nrf51.ld
│ ├── nrf52-s132v6.json
│ ├── nrf52-s132v6.ld
│ ├── nrf52.json
│ ├── nrf52.ld
│ ├── nrf52833-s113v7.json
│ ├── nrf52833-s113v7.ld
│ ├── nrf52833-s140v7.json
│ ├── nrf52833-s140v7.ld
│ ├── nrf52833.json
│ ├── nrf52833.ld
│ ├── nrf52840-mdk-usb-dongle.json
│ ├── nrf52840-mdk.json
│ ├── nrf52840-s140v6-uf2-generic.json
│ ├── nrf52840-s140v6-uf2.json
│ ├── nrf52840-s140v6-uf2.ld
│ ├── nrf52840-s140v7-uf2.json
│ ├── nrf52840-s140v7-uf2.ld
│ ├── nrf52840-s140v7.json
│ ├── nrf52840-s140v7.ld
│ ├── nrf52840.json
│ ├── nrf52840.ld
│ ├── nucleo-f103rb.json
│ ├── nucleo-f722ze.json
│ ├── nucleo-l031k6.json
│ ├── nucleo-l432kc.json
│ ├── nucleo-l476rg.json
│ ├── nucleo-l552ze.json
│ ├── nucleo-wl55jc.json
│ ├── nxpmk66f18.ld
│ ├── p1am-100.json
│ ├── particle-3rd-gen.json
│ ├── particle-argon.json
│ ├── particle-boron.json
│ ├── particle-xenon.json
│ ├── pca10031.json
│ ├── pca10040-s132v6.json
│ ├── pca10040.json
│ ├── pca10056-s140v6-uf2.json
│ ├── pca10056-s140v7.json
│ ├── pca10056.json
│ ├── pca10059-s140v7.json
│ ├── pca10059.json
│ ├── pca10059.ld
│ ├── pga2350.json
│ ├── pico-boot-stage2.S
│ ├── pico-plus2.json
│ ├── pico-w.json
│ ├── pico.json
│ ├── pico2-ice.json
│ ├── pico2-w.json
│ ├── pico2.json
│ ├── pinetime.json
│ ├── pybadge.json
│ ├── pygamer.json
│ ├── pyportal.json
│ ├── qtpy-esp32c3.json
│ ├── qtpy-rp2040-boot-stage2.S
│ ├── qtpy-rp2040.json
│ ├── qtpy.json
│ ├── rak4631.json
│ ├── reelboard-s140v7.json
│ ├── reelboard.json
│ ├── riscv-qemu.json
│ ├── riscv-qemu.ld
│ ├── riscv.json
│ ├── riscv.ld
│ ├── riscv32.json
│ ├── riscv64.json
│ ├── rp2040-boot-stage2.S
│ ├── rp2040.json
│ ├── rp2040.ld
│ ├── rp2350.json
│ ├── rp2350.ld
│ ├── rp2350_embedded_block.s
│ ├── rp2350b.json
│ ├── simavr.json
│ ├── stm32.ld
│ ├── stm32f103rb.ld
│ ├── stm32f405.ld
│ ├── stm32f407.ld
│ ├── stm32f469.ld
│ ├── stm32f469disco.json
│ ├── stm32f4disco-1.json
│ ├── stm32f4disco.json
│ ├── stm32f7x2zetx.ld
│ ├── stm32l031k6.ld
│ ├── stm32l031x6.ld
│ ├── stm32l072czt6.ld
│ ├── stm32l0x1.json
│ ├── stm32l0x2.json
│ ├── stm32l4x2.ld
│ ├── stm32l4x5.ld
│ ├── stm32l4x6.ld
│ ├── stm32l5x2xe.ld
│ ├── stm32wl5x_cm4.json
│ ├── stm32wle5.json
│ ├── stm32wlx.ld
│ ├── swan.json
│ ├── teensy36.json
│ ├── teensy36.s
│ ├── teensy40.json
│ ├── teensy40.s
│ ├── teensy41.json
│ ├── thingplus-rp2040.json
│ ├── thumby.json
│ ├── tiny2350.json
│ ├── tkey.json
│ ├── tkey.ld
│ ├── trinket-m0.json
│ ├── trinkey-qt2040-boot-stage2.S
│ ├── trinkey-qt2040.json
│ ├── tufty2040.json
│ ├── wasi.json
│ ├── wasip1.json
│ ├── wasip2.json
│ ├── wasm-undefined.txt
│ ├── wasm-unknown.json
│ ├── wasm.json
│ ├── wasm_exec.js
│ ├── waveshare-rp2040-tiny.json
│ ├── waveshare-rp2040-zero.json
│ ├── wioterminal.json
│ ├── x9pro.json
│ ├── xiao-ble.json
│ ├── xiao-esp32c3.json
│ ├── xiao-esp32s3.json
│ ├── xiao-rp2040.json
│ ├── xiao.json
│ └── xtensa.json
├── testdata/
│ ├── alias.go
│ ├── alias.txt
│ ├── atomic.go
│ ├── atomic.txt
│ ├── binop.go
│ ├── binop.txt
│ ├── calls.go
│ ├── calls.txt
│ ├── cgo/
│ │ ├── extra.go
│ │ ├── main.c
│ │ ├── main.go
│ │ ├── main.h
│ │ ├── out.txt
│ │ └── test.h
│ ├── channel.go
│ ├── channel.txt
│ ├── corpus.yaml
│ ├── embed/
│ │ ├── a/
│ │ │ └── b/
│ │ │ ├── .hidden
│ │ │ ├── bar.txt
│ │ │ └── foo.txt
│ │ ├── embed.go
│ │ ├── hello.txt
│ │ └── out.txt
│ ├── env.go
│ ├── env.txt
│ ├── errors/
│ │ ├── cgo.go
│ │ ├── compiler.go
│ │ ├── importcycle/
│ │ │ └── cycle.go
│ │ ├── interp.go
│ │ ├── invaliddep/
│ │ │ └── invaliddep.go
│ │ ├── invalidmain.go
│ │ ├── invalidname/
│ │ │ └── invalidname.go
│ │ ├── invalidname.go
│ │ ├── linker-flashoverflow.go
│ │ ├── linker-ramoverflow.go
│ │ ├── linker-undefined.go
│ │ ├── loader-importcycle.go
│ │ ├── loader-invaliddep.go
│ │ ├── loader-invalidpackage.go
│ │ ├── loader-nopackage.go
│ │ ├── optimizer.go
│ │ ├── syntax.go
│ │ └── types.go
│ ├── filesystem.go
│ ├── filesystem.txt
│ ├── float.go
│ ├── float.txt
│ ├── gc.go
│ ├── gc.txt
│ ├── generics/
│ │ ├── testa/
│ │ │ └── testa.go
│ │ ├── testb/
│ │ │ └── testb.go
│ │ └── value/
│ │ └── value.go
│ ├── generics.go
│ ├── generics.txt
│ ├── go1.21.go
│ ├── go1.21.txt
│ ├── go1.22/
│ │ ├── go.mod
│ │ ├── main.go
│ │ └── out.txt
│ ├── go1.23/
│ │ ├── go.mod
│ │ ├── main.go
│ │ └── out.txt
│ ├── goroutines.go
│ ├── goroutines.txt
│ ├── init.go
│ ├── init.txt
│ ├── init_multi.go
│ ├── init_multi.txt
│ ├── interface.go
│ ├── interface.txt
│ ├── json.go
│ ├── json.txt
│ ├── ldflags.go
│ ├── ldflags.txt
│ ├── map.go
│ ├── map.txt
│ ├── math.go
│ ├── math.txt
│ ├── oldgo/
│ │ ├── go.mod
│ │ ├── main.go
│ │ └── out.txt
│ ├── print.go
│ ├── print.txt
│ ├── rand.go
│ ├── rand.txt
│ ├── recover.go
│ ├── recover.txt
│ ├── reflect.go
│ ├── reflect.txt
│ ├── signal.go
│ ├── signal.txt
│ ├── slice.go
│ ├── slice.txt
│ ├── sort.go
│ ├── sort.txt
│ ├── stdlib.go
│ ├── stdlib.txt
│ ├── string.go
│ ├── string.txt
│ ├── structs.go
│ ├── structs.txt
│ ├── testing.go
│ ├── testing.txt
│ ├── timers.go
│ ├── timers.txt
│ ├── trivialpanic.go
│ ├── wasmexit.go
│ ├── wasmexit.js
│ ├── wasmexport-noscheduler.go
│ ├── wasmexport.go
│ ├── wasmexport.js
│ ├── wasmexport.txt
│ ├── wasmfunc.go
│ ├── wasmfunc.js
│ ├── wasmfunc.txt
│ ├── zeroalloc.go
│ └── zeroalloc.txt
├── tests/
│ ├── os/
│ │ └── smoke/
│ │ └── smoke_test.go
│ ├── runtime/
│ │ └── memhash_test.go
│ ├── runtime_wasi/
│ │ └── malloc_test.go
│ ├── testing/
│ │ ├── builderr/
│ │ │ ├── builderr.go
│ │ │ └── builderr_test.go
│ │ ├── chdir/
│ │ │ └── chdir.go
│ │ ├── fail/
│ │ │ └── fail_test.go
│ │ ├── nothing/
│ │ │ └── nothing.go
│ │ ├── pass/
│ │ │ └── pass_test.go
│ │ └── recurse/
│ │ ├── subdir/
│ │ │ └── subdir_test.go
│ │ └── top_test.go
│ ├── text/
│ │ └── template/
│ │ └── smoke/
│ │ ├── empty.go
│ │ └── smoke_test.go
│ ├── tinygotest/
│ │ ├── main.go
│ │ └── main_test.go
│ └── wasm/
│ ├── chan_test.go
│ ├── event_test.go
│ ├── fmt_test.go
│ ├── fmtprint_test.go
│ ├── go.mod
│ ├── go.sum
│ ├── log_test.go
│ ├── setup_test.go
│ └── testdata/
│ ├── chan.go
│ ├── event.go
│ ├── fmt.go
│ ├── fmtprint.go
│ └── log.go
├── tools/
│ ├── gen-critical-atomics/
│ │ └── gen-critical-atomics.go
│ ├── gen-device-avr/
│ │ └── gen-device-avr.go
│ ├── gen-device-svd/
│ │ └── gen-device-svd.go
│ ├── sizediff
│ └── tgtestjson.sh
├── transform/
│ ├── allocs.go
│ ├── allocs_test.go
│ ├── errors.go
│ ├── gc.go
│ ├── gc_test.go
│ ├── interface-lowering.go
│ ├── interface-lowering_test.go
│ ├── interrupt.go
│ ├── interrupt_test.go
│ ├── llvm.go
│ ├── maps.go
│ ├── maps_test.go
│ ├── optimizer.go
│ ├── rtcalls.go
│ ├── rtcalls_test.go
│ ├── stacksize.go
│ ├── stacksize_test.go
│ ├── testdata/
│ │ ├── allocs.ll
│ │ ├── allocs.out.ll
│ │ ├── allocs2.go
│ │ ├── gc-stackslots.ll
│ │ ├── gc-stackslots.out.ll
│ │ ├── interface.ll
│ │ ├── interface.out.ll
│ │ ├── interrupt.ll
│ │ ├── interrupt.out.ll
│ │ ├── maps.ll
│ │ ├── maps.out.ll
│ │ ├── reflect-implements.ll
│ │ ├── reflect-implements.out.ll
│ │ ├── reflect.go
│ │ ├── stacksize.ll
│ │ ├── stacksize.out.ll
│ │ ├── stringequal.ll
│ │ ├── stringequal.out.ll
│ │ ├── stringtobytes.ll
│ │ └── stringtobytes.out.ll
│ ├── transform.go
│ ├── transform_test.go
│ └── util.go
├── util_unix.go
└── util_windows.go
================================================
FILE CONTENTS
================================================
================================================
FILE: .circleci/config.yml
================================================
version: 2.1
commands:
submodules:
steps:
- run:
name: "Pull submodules"
command: git submodule update --init
llvm-source-linux:
steps:
- restore_cache:
keys:
- llvm-source-19-v1
- run:
name: "Fetch LLVM source"
command: make llvm-source
- save_cache:
key: llvm-source-19-v1
paths:
- llvm-project/clang/lib/Headers
- llvm-project/clang/include
- llvm-project/compiler-rt
- llvm-project/lld/include
- llvm-project/llvm/include
hack-ninja-jobs:
steps:
- run:
name: "Hack Ninja to use less jobs"
command: |
echo -e '#!/bin/sh\n/usr/bin/ninja -j3 "$@"' > /go/bin/ninja
chmod +x /go/bin/ninja
build-binaryen-linux:
steps:
- restore_cache:
keys:
- binaryen-linux-v3
- run:
name: "Build Binaryen"
command: |
make binaryen
- save_cache:
key: binaryen-linux-v3
paths:
- build/wasm-opt
test-linux:
parameters:
llvm:
type: string
fmt-check:
type: boolean
default: true
steps:
- checkout
- submodules
- run:
name: "Install apt dependencies"
command: |
echo 'deb https://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-<<parameters.llvm>> main' > /etc/apt/sources.list.d/llvm.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
apt-get update
apt-get install --no-install-recommends -y \
llvm-<<parameters.llvm>>-dev \
clang-<<parameters.llvm>> \
libclang-<<parameters.llvm>>-dev \
lld-<<parameters.llvm>> \
cmake \
ninja-build
- hack-ninja-jobs
- build-binaryen-linux
- restore_cache:
keys:
- go-cache-v4-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_PREVIOUS_BUILD_NUM }}
- go-cache-v4-{{ checksum "go.mod" }}
- llvm-source-linux
- run: go install -tags=llvm<<parameters.llvm>> .
- when:
condition: <<parameters.fmt-check>>
steps:
- run:
# Do this before gen-device so that it doesn't check the
# formatting of generated files.
name: Check Go code formatting
command: make fmt-check lint
- run: make gen-device -j4
# TODO: change this to -skip='TestErrors|TestWasm' with Go 1.20
- run: go test -tags=llvm<<parameters.llvm>> -short -run='TestBuild|TestTest|TestGetList|TestTraceback'
- run: make smoketest XTENSA=0
- save_cache:
key: go-cache-v4-{{ checksum "go.mod" }}-{{ .Environment.CIRCLE_BUILD_NUM }}
paths:
- ~/.cache/go-build
- /go/pkg/mod
jobs:
test-oldest:
# This tests our lowest supported versions of Go and LLVM, to make sure at
# least the smoke tests still pass.
docker:
- image: golang:1.22-bullseye
steps:
- test-linux:
llvm: "15"
resource_class: large
test-newest:
# This tests the latest supported LLVM version when linking against system
# libraries.
docker:
- image: golang:1.25-bullseye
steps:
- test-linux:
llvm: "20"
resource_class: large
workflows:
test-all:
jobs:
- test-oldest
# disable this test, since CircleCI seems unable to download due to rate-limits on Dockerhub.
# - test-newest
================================================
FILE: .dockerignore
================================================
build/
llvm-*/
.github
.circleci
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
open_collective: tinygo
================================================
FILE: .github/workflows/build-macos.yml
================================================
name: macOS
on:
pull_request:
push:
branches:
- dev
- release
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-macos:
name: build-macos
strategy:
matrix:
# macos-14: arm64 (oldest supported version as of 18-11-2025)
# macos-15-intel: amd64 (last intel version to be supported by github runners)
# See https://github.com/actions/runner-images/issues/13046
os: [macos-14, macos-15-intel]
include:
- os: macos-14
goarch: arm64
- os: macos-15-intel
goarch: amd64
runs-on: ${{ matrix.os }}
steps:
- name: Install Dependencies
run: |
HOMEBREW_NO_AUTO_UPDATE=1 brew install qemu binaryen
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
- name: Extract TinyGo version
id: version
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT"
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Restore LLVM source cache
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-${{ matrix.os }}-v1
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save LLVM source cache
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Restore LLVM build cache
uses: actions/cache/restore@v4
id: cache-llvm-build
with:
key: llvm-build-20-${{ matrix.os }}-v2
path: llvm-build
- name: Build LLVM
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
run: |
# fetch LLVM source
rm -rf llvm-project
make llvm-source
# install dependencies
HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja
# build!
make llvm-build
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
- name: Save LLVM build cache
uses: actions/cache/save@v4
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
path: llvm-build
- name: make gen-device
run: make -j3 gen-device
- name: Test TinyGo
run: make test GOTESTFLAGS="-only-current-os"
- name: Build TinyGo release tarball
run: make release -j3
- name: Test stdlib packages
run: make tinygo-test
- name: Make release artifact
run: cp -p build/release.tar.gz build/tinygo${{ steps.version.outputs.version }}.darwin-${{ matrix.goarch }}.tar.gz
- name: Publish release artifact
# Note: this release artifact is double-zipped, see:
# https://github.com/actions/upload-artifact/issues/39
# We can essentially pick one of these:
# - have a double-zipped artifact when downloaded from the UI
# - have a very slow artifact upload
# We're doing the former here, to keep artifact uploads fast.
uses: actions/upload-artifact@v4
with:
name: darwin-${{ matrix.goarch }}-double-zipped-${{ steps.version.outputs.version }}
path: build/tinygo${{ steps.version.outputs.version }}.darwin-${{ matrix.goarch }}.tar.gz
- name: Smoke tests
run: make smoketest TINYGO=$(PWD)/build/tinygo
test-macos-homebrew:
name: homebrew-install
runs-on: macos-latest
strategy:
matrix:
version: [16, 17, 18, 19, 20]
steps:
- name: Set up Homebrew
uses: Homebrew/actions/setup-homebrew@master
- name: Fix Python symlinks
run: |
# Github runners have broken symlinks, so relink
# see: https://github.com/actions/setup-python/issues/577
brew list -1 | grep python | while read formula; do brew unlink $formula; brew link --overwrite $formula; done
- name: Install LLVM
run: |
brew install llvm@${{ matrix.version }}
- name: Checkout
uses: actions/checkout@v5
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Build TinyGo (LLVM ${{ matrix.version }})
run: go install -tags=llvm${{ matrix.version }}
- name: Check binary
run: tinygo version
- name: Build TinyGo (default LLVM)
if: matrix.version == 20
run: go install
- name: Check binary
if: matrix.version == 20
run: tinygo version
================================================
FILE: .github/workflows/docker.yml
================================================
# This is the Github action to build and push the tinygo/tinygo-dev Docker image.
# If you are looking for the tinygo/tinygo "release" Docker image please see
# https://github.com/tinygo-org/docker
#
name: Docker
on:
push:
branches: [ dev, fix-docker-llvm-build ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
push_to_registry:
name: build-push-dev
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Free Disk space
shell: bash
run: |
df -h
sudo rm -rf /opt/hostedtoolcache
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf /usr/local/graalvm
sudo rm -rf /usr/local/share/boost
df -h
- name: Check out the repo
uses: actions/checkout@v5
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
tinygo/tinygo-dev
ghcr.io/${{ github.repository_owner }}/tinygo-dev
tags: |
type=sha,format=long
type=raw,value=latest
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Log in to Github Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
================================================
FILE: .github/workflows/linux.yml
================================================
name: Linux
on:
pull_request:
push:
branches:
- dev
- release
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-linux:
# Build Linux binaries, ready for release.
# This runs inside an Alpine Linux container so we can more easily create a
# statically linked binary.
runs-on: ubuntu-latest
container:
image: golang:1.25-alpine
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Install apk dependencies
# tar: needed for actions/cache@v4
# git+openssh: needed for checkout (I think?)
# ruby: needed to install fpm
run: apk add tar git openssh make g++ ruby-dev mold
- name: Work around CVE-2022-24765
# We're not on a multi-user machine, so this is safe.
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
- name: Extract TinyGo version
id: version
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT"
- name: Cache Go
uses: actions/cache@v4
with:
key: go-cache-linux-alpine-v1-${{ hashFiles('go.mod') }}
path: |
~/.cache/go-build
~/go/pkg/mod
- name: Restore LLVM source cache
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-linux-alpine-v1
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save LLVM source cache
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Restore LLVM build cache
uses: actions/cache/restore@v4
id: cache-llvm-build
with:
key: llvm-build-20-linux-alpine-v1
path: llvm-build
- name: Build LLVM
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
run: |
# fetch LLVM source
rm -rf llvm-project
make llvm-source
# install dependencies
apk add cmake samurai python3
# build!
make llvm-build
# Remove unnecessary object files (to reduce cache size).
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
- name: Save LLVM build cache
uses: actions/cache/save@v4
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
path: llvm-build
- name: Cache Binaryen
uses: actions/cache@v4
id: cache-binaryen
with:
key: binaryen-linux-alpine-v1
path: build/wasm-opt
- name: Build Binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
run: |
apk add cmake samurai python3
make binaryen STATIC=1
- name: Install fpm
run: |
gem install --version 4.0.7 public_suffix
gem install --version 2.7.6 dotenv
gem install --no-document fpm
- name: Run linter
run: make lint
- name: Run spellcheck
run: make spell
- name: Build TinyGo release
run: |
make release deb -j3 STATIC=1
cp -p build/release.tar.gz /tmp/tinygo${{ steps.version.outputs.version }}.linux-amd64.tar.gz
cp -p build/release.deb /tmp/tinygo_${{ steps.version.outputs.version }}_amd64.deb
- name: Publish release artifact
uses: actions/upload-artifact@v4
with:
name: linux-amd64-double-zipped-${{ steps.version.outputs.version }}
path: |
/tmp/tinygo${{ steps.version.outputs.version }}.linux-amd64.tar.gz
/tmp/tinygo_${{ steps.version.outputs.version }}_amd64.deb
test-linux-build:
# Test the binaries built in the build-linux job by running the smoke tests.
runs-on: ubuntu-latest
needs: build-linux
steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Install wasmtime
uses: bytecodealliance/actions/wasmtime/setup@v1
with:
version: "29.0.1"
- name: Install wasm-tools
uses: bytecodealliance/actions/wasm-tools/setup@v1
- name: Download release artifact
uses: actions/download-artifact@v4
with:
name: linux-amd64-double-zipped-${{ needs.build-linux.outputs.version }}
- name: Extract release tarball
run: |
mkdir -p ~/lib
tar -C ~/lib -xf tinygo${{ needs.build-linux.outputs.version }}.linux-amd64.tar.gz
ln -s ~/lib/tinygo/bin/tinygo ~/go/bin/tinygo
- run: make tinygo-test-wasip1-fast
- run: make tinygo-test-wasip2-fast
- run: make tinygo-test-wasm
- run: make smoketest
assert-test-linux:
# Run all tests that can run on Linux, with LLVM assertions enabled to catch
# potential bugs.
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
- name: Install apt dependencies
run: |
echo "Show cpuinfo; sometimes useful when troubleshooting"
cat /proc/cpuinfo
sudo apt-get update
sudo apt-get install --no-install-recommends \
qemu-system-arm \
qemu-system-riscv32 \
qemu-user \
simavr \
ninja-build
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
- name: Install wasmtime
uses: bytecodealliance/actions/wasmtime/setup@v1
with:
version: "29.0.1"
- name: Setup `wasm-tools`
uses: bytecodealliance/actions/wasm-tools/setup@v1
- name: Restore LLVM source cache
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-linux-asserts-v1
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save LLVM source cache
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Restore LLVM build cache
uses: actions/cache/restore@v4
id: cache-llvm-build
with:
key: llvm-build-20-linux-asserts-v1
path: llvm-build
- name: Build LLVM
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
run: |
# fetch LLVM source
rm -rf llvm-project
make llvm-source
# build!
make llvm-build ASSERT=1
# Remove unnecessary object files (to reduce cache size).
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
- name: Save LLVM build cache
uses: actions/cache/save@v4
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
path: llvm-build
- name: Cache Binaryen
uses: actions/cache@v4
id: cache-binaryen
with:
key: binaryen-linux-asserts-v1
path: build/wasm-opt
- name: Build Binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
run: make binaryen
- run: make gen-device -j4
- name: Test TinyGo
run: make ASSERT=1 test
- name: Build TinyGo
run: |
make ASSERT=1
echo "$(pwd)/build" >> $GITHUB_PATH
- name: Test stdlib packages
run: make tinygo-test
- run: make smoketest
- run: make wasmtest
- run: make tinygo-test-baremetal
build-linux-cross:
# Build ARM Linux binaries, ready for release.
# This intentionally uses an older Linux image, so that we compile against
# an older glibc version and therefore are compatible with a wide range of
# Linux distributions.
# It is set to "needs: build-linux" because it modifies the release created
# in that process to avoid doing lots of duplicate work and to avoid
# complications around precompiled libraries such as compiler-rt shipped as
# part of the release tarball.
strategy:
matrix:
goarch: [ arm, arm64 ]
include:
- goarch: arm64
toolchain: aarch64-linux-gnu
libc: arm64
- goarch: arm
toolchain: arm-linux-gnueabihf
libc: armhf
runs-on: ubuntu-22.04 # note: use the oldest image available! (see above)
needs: build-linux
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Get TinyGo version
id: version
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT"
- name: Install apt dependencies
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends \
qemu-user \
g++-${{ matrix.toolchain }} \
libc6-dev-${{ matrix.libc }}-cross
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Restore LLVM source cache
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-linux-v1
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save LLVM source cache
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Restore LLVM build cache
uses: actions/cache/restore@v4
id: cache-llvm-build
with:
key: llvm-build-20-linux-${{ matrix.goarch }}-v1
path: llvm-build
- name: Build LLVM
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
run: |
# fetch LLVM source
rm -rf llvm-project
make llvm-source
# Install build dependencies.
sudo apt-get install --no-install-recommends ninja-build
# build!
make llvm-build CROSS=${{ matrix.toolchain }}
# Remove unnecessary object files (to reduce cache size).
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
- name: Save LLVM build cache
uses: actions/cache/save@v4
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
path: llvm-build
- name: Cache Binaryen
uses: actions/cache@v4
id: cache-binaryen
with:
key: binaryen-linux-${{ matrix.goarch }}-v4
path: build/wasm-opt
- name: Build Binaryen
if: steps.cache-binaryen.outputs.cache-hit != 'true'
run: |
sudo apt-get install --no-install-recommends ninja-build
git submodule update --init lib/binaryen
make CROSS=${{ matrix.toolchain }} binaryen
- name: Install fpm
run: |
sudo gem install --version 4.0.7 public_suffix
sudo gem install --version 2.7.6 dotenv
sudo gem install --no-document fpm
- name: Build TinyGo binary
run: |
make CROSS=${{ matrix.toolchain }}
- name: Download amd64 release
uses: actions/download-artifact@v4
with:
name: linux-amd64-double-zipped-${{ needs.build-linux.outputs.version }}
- name: Extract amd64 release
run: |
mkdir -p build/release
tar -xf tinygo${{ needs.build-linux.outputs.version }}.linux-amd64.tar.gz -C build/release tinygo
- name: Modify release
run: |
cp -p build/tinygo build/release/tinygo/bin
cp -p build/wasm-opt build/release/tinygo/bin
- name: Create ${{ matrix.goarch }} release
run: |
make release deb RELEASEONLY=1 DEB_ARCH=${{ matrix.libc }}
cp -p build/release.tar.gz /tmp/tinygo${{ steps.version.outputs.version }}.linux-${{ matrix.goarch }}.tar.gz
cp -p build/release.deb /tmp/tinygo_${{ steps.version.outputs.version }}_${{ matrix.libc }}.deb
- name: Publish release artifact
uses: actions/upload-artifact@v4
with:
name: linux-${{ matrix.goarch }}-double-zipped-${{ steps.version.outputs.version }}
path: |
/tmp/tinygo${{ steps.version.outputs.version }}.linux-${{ matrix.goarch }}.tar.gz
/tmp/tinygo_${{ steps.version.outputs.version }}_${{ matrix.libc }}.deb
================================================
FILE: .github/workflows/llvm.yml
================================================
# This is the Github action to build and push the LLVM Docker image
# used by the tinygo/tinygo-dev Docker image.
#
# It only needs to be rebuilt when updating the LLVM version.
#
# To update, make any needed changes to this file,
# then push to the "build-llvm-image" branch.
#
# The needed image will be rebuilt, which will very likely take at least 1-2 hours.
name: LLVM
on:
push:
branches: [ build-llvm-image ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-push-llvm:
name: build-push-llvm
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v5
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
tinygo/llvm-20
ghcr.io/${{ github.repository_owner }}/llvm-20
tags: |
type=sha,format=long
type=raw,value=latest
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Log in to Github Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
target: tinygo-llvm-build
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
================================================
FILE: .github/workflows/nix.yml
================================================
name: Nix
on:
pull_request:
push:
branches:
- dev
- release
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
nix-test:
runs-on: ubuntu-latest
steps:
- name: Uninstall system LLVM
# Hack to work around issue where we still include system headers for
# some reason.
# See: https://github.com/tinygo-org/tinygo/pull/4516#issuecomment-2416363668
run: sudo apt-get remove llvm-18
- name: Checkout
uses: actions/checkout@v5
- name: Pull musl, bdwgc
run: |
git submodule update --init lib/musl lib/bdwgc
- name: Restore LLVM source cache
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-linux-nix-v1
path: |
llvm-project/compiler-rt
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save LLVM source cache
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/compiler-rt
- uses: cachix/install-nix-action@v22
- name: Test
run: |
nix develop --ignore-environment --keep HOME --command bash -c "go install && ~/go/bin/tinygo version && ~/go/bin/tinygo build -o test ./testdata/cgo"
================================================
FILE: .github/workflows/sizediff-install-pkgs.sh
================================================
# Command that's part of sizediff.yml. This is put in a separate file so that it
# still works after checking out the dev branch (that is, when going from LLVM
# 16 to LLVM 17 for example, both Clang 16 and Clang 17 are installed).
echo 'deb https://apt.llvm.org/noble/ llvm-toolchain-noble-20 main' | sudo tee /etc/apt/sources.list.d/llvm.list
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install --no-install-recommends -y \
llvm-20-dev \
clang-20 \
libclang-20-dev \
lld-20
================================================
FILE: .github/workflows/sizediff.yml
================================================
name: Binary size difference
on:
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
sizediff:
# Note: when updating the Ubuntu version, also update the Ubuntu version in
# sizediff-install-pkgs.sh
runs-on: ubuntu-24.04
permissions:
pull-requests: write
steps:
# Prepare, install tools
- name: Add GOBIN to $PATH
run: |
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0 # fetch all history (no sparse checkout)
submodules: true
- name: Install apt dependencies
run: ./.github/workflows/sizediff-install-pkgs.sh
- name: Restore LLVM source cache
uses: actions/cache@v4
id: cache-llvm-source
with:
key: llvm-source-20-sizediff-v1
path: |
llvm-project/compiler-rt
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Cache Go
uses: actions/cache@v4
with:
key: go-cache-linux-sizediff-v2-${{ hashFiles('go.mod') }}
path: |
~/.cache/go-build
~/go/pkg/mod
- run: make gen-device -j4
- name: Download drivers repo
run: git clone https://github.com/tinygo-org/drivers.git
- name: Save HEAD
run: git branch github-actions-saved-HEAD HEAD
# Compute sizes for the PR branch
- name: Build tinygo binary for the PR branch
run: go install
- name: Determine binary sizes on the PR branch
run: (cd drivers; make smoke-test XTENSA=0 | tee sizes-pr.txt)
# Compute sizes for the dev branch
- name: Checkout dev branch
run: |
git reset --hard origin/dev
git checkout --no-recurse-submodules `git merge-base HEAD origin/dev`
- name: Install apt dependencies on the dev branch
# this is only needed on a PR that changes the LLVM version
run: ./.github/workflows/sizediff-install-pkgs.sh
- name: Build tinygo binary for the dev branch
run: go install
- name: Determine binary sizes on the dev branch
run: (cd drivers; make smoke-test XTENSA=0 | tee sizes-dev.txt)
# Create comment
# TODO: add a summary, something like:
# - overall size difference (percent)
# - number of binaries that grew / shrank / remained the same
# - don't show the full diff when no binaries changed
- name: Calculate size diff
run: ./tools/sizediff drivers/sizes-dev.txt drivers/sizes-pr.txt | tee sizediff.txt
- name: Create comment
run: |
echo "Size difference with the dev branch:" > comment.txt
echo "<details><summary>Binary size difference</summary>" >> comment.txt
echo "<pre>" >> comment.txt
cat sizediff.txt >> comment.txt
echo "</pre></details>" >> comment.txt
- name: Comment contents
run: cat comment.txt
- name: Add comment
if: ${{ github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name }}
uses: thollander/actions-comment-pull-request@v2.3.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
filePath: comment.txt
comment_tag: sizediff
================================================
FILE: .github/workflows/tinygo-extract-version.sh
================================================
#!/bin/sh
# Extract the version string from the source code, to be stored in a variable.
grep 'const version' goenv/version.go | sed 's/^const version = "\(.*\)"$/version=\1/g'
================================================
FILE: .github/workflows/windows.yml
================================================
name: Windows
on:
pull_request:
push:
branches:
- dev
- release
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-windows:
runs-on: windows-2022
outputs:
version: ${{ steps.version.outputs.version }}
steps:
- name: Configure pagefile
uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 24GB
disk-root: "C:"
- uses: MinoruSekine/setup-scoop@v4
with:
scoop_update: 'false'
- name: Install Dependencies
shell: bash
run: |
scoop install ninja binaryen
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
- name: Extract TinyGo version
id: version
shell: bash
run: ./.github/workflows/tinygo-extract-version.sh | tee -a "$GITHUB_OUTPUT"
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Restore cached LLVM source
uses: actions/cache/restore@v4
id: cache-llvm-source
with:
key: llvm-source-20-windows-v1
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Download LLVM source
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
run: make llvm-source
- name: Save cached LLVM source
uses: actions/cache/save@v4
if: steps.cache-llvm-source.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-source.outputs.cache-primary-key }}
path: |
llvm-project/clang/lib/Headers
llvm-project/clang/include
llvm-project/compiler-rt
llvm-project/lld/include
llvm-project/llvm/include
- name: Restore cached LLVM build
uses: actions/cache/restore@v4
id: cache-llvm-build
with:
key: llvm-build-20-windows-v2
path: llvm-build
- name: Build LLVM
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
shell: bash
run: |
# fetch LLVM source
rm -rf llvm-project
make llvm-source
# build!
make llvm-build CCACHE=OFF
# Remove unnecessary object files (to reduce cache size).
find llvm-build -name CMakeFiles -prune -exec rm -r '{}' \;
- name: Save cached LLVM build
uses: actions/cache/save@v4
if: steps.cache-llvm-build.outputs.cache-hit != 'true'
with:
key: ${{ steps.cache-llvm-build.outputs.cache-primary-key }}
path: llvm-build
- name: Cache Go cache
uses: actions/cache@v4
with:
key: go-cache-windows-v1-${{ hashFiles('go.mod') }}
path: |
C:/Users/runneradmin/AppData/Local/go-build
C:/Users/runneradmin/go/pkg/mod
- name: Install wasmtime
run: |
scoop install wasmtime@29.0.1
- name: make gen-device
run: make -j3 gen-device
- name: Test TinyGo
shell: bash
run: make test GOTESTFLAGS="-only-current-os"
- name: Build TinyGo release tarball
shell: bash
run: make build/release -j4
- name: Make release artifact
shell: bash
working-directory: build/release
run: 7z -tzip a tinygo${{ steps.version.outputs.version }}.windows-amd64.zip tinygo
- name: Publish release artifact
# Note: this release artifact is double-zipped, see:
# https://github.com/actions/upload-artifact/issues/39
# We can essentially pick one of these:
# - have a dobule-zipped artifact when downloaded from the UI
# - have a very slow artifact upload
# We're doing the former here, to keep artifact uploads fast.
uses: actions/upload-artifact@v4
with:
name: windows-amd64-double-zipped-${{ steps.version.outputs.version }}
path: build/release/tinygo${{ steps.version.outputs.version }}.windows-amd64.zip
smoke-test-windows:
runs-on: windows-2022
needs: build-windows
steps:
- name: Configure pagefile
uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 24GB
disk-root: "C:"
- uses: MinoruSekine/setup-scoop@v4
with:
scoop_update: 'false'
- name: Install Dependencies
shell: bash
run: |
scoop install binaryen
- name: Checkout
uses: actions/checkout@v5
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Download TinyGo build
uses: actions/download-artifact@v4
with:
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }}
path: build/
- name: Unzip TinyGo build
shell: bash
working-directory: build
run: 7z x tinygo*.windows-amd64.zip -r
- name: Smoke tests
shell: bash
run: make smoketest TINYGO=$(PWD)/build/tinygo/bin/tinygo
stdlib-test-windows:
runs-on: windows-2022
needs: build-windows
steps:
- name: Configure pagefile
uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 24GB
disk-root: "C:"
- name: Checkout
uses: actions/checkout@v5
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Download TinyGo build
uses: actions/download-artifact@v4
with:
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }}
path: build/
- name: Unzip TinyGo build
shell: bash
working-directory: build
run: 7z x tinygo*.windows-amd64.zip -r
- name: Test stdlib packages
run: make tinygo-test TINYGO=$(PWD)/build/tinygo/bin/tinygo
stdlib-wasi-test-windows:
runs-on: windows-2022
needs: build-windows
steps:
- name: Configure pagefile
uses: al-cheb/configure-pagefile-action@v1.4
with:
minimum-size: 8GB
maximum-size: 24GB
disk-root: "C:"
- uses: MinoruSekine/setup-scoop@v4
with:
scoop_update: 'false'
- name: Install Dependencies
shell: bash
run: |
scoop install binaryen && scoop install wasmtime@29.0.1
- name: Checkout
uses: actions/checkout@v5
- name: Install Go
uses: actions/setup-go@v6
with:
go-version: '1.25.5'
cache: true
- name: Download TinyGo build
uses: actions/download-artifact@v4
with:
name: windows-amd64-double-zipped-${{ needs.build-windows.outputs.version }}
path: build/
- name: Unzip TinyGo build
shell: bash
working-directory: build
run: 7z x tinygo*.windows-amd64.zip -r
- name: Test stdlib packages on wasip1
run: make tinygo-test-wasip1-fast TINYGO=$(PWD)/build/tinygo/bin/tinygo
================================================
FILE: .gitignore
================================================
.DS_Store
.vscode
go.work
go.work.sum
docs/_build
src/device/avr/*.go
src/device/avr/*.ld
src/device/avr/*.s
src/device/esp/*.go
src/device/nrf/*.go
src/device/nrf/*.s
src/device/nxp/*.go
src/device/nxp/*.s
src/device/sam/*.go
src/device/sam/*.s
src/device/sifive/*.go
src/device/sifive/*.s
src/device/stm32/*.go
src/device/stm32/*.s
src/device/kendryte/*.go
src/device/kendryte/*.s
src/device/renesas/*.go
src/device/renesas/*.s
src/device/rp/*.go
src/device/rp/*.s
./vendor
llvm-build
llvm-project
build/*
# Ignore files generated by smoketest
test
test.bin
test.elf
test.exe
test.gba
test.hex
test.nro
test.uf2
test.wasm
wasm.wasm
*.uf2
*.elf
================================================
FILE: .gitmodules
================================================
[submodule "lib/nrfx"]
path = lib/nrfx
url = https://github.com/NordicSemiconductor/nrfx.git
[submodule "lib/CMSIS"]
path = lib/CMSIS
url = https://github.com/ARM-software/CMSIS.git
[submodule "lib/avr"]
path = lib/avr
url = https://github.com/avr-rust/avr-mcu.git
[submodule "lib/cmsis-svd"]
path = lib/cmsis-svd
url = https://github.com/cmsis-svd/cmsis-svd-data.git
branch = main
[submodule "lib/wasi-libc"]
path = lib/wasi-libc
url = https://github.com/WebAssembly/wasi-libc
[submodule "lib/picolibc"]
path = lib/picolibc
url = https://github.com/picolibc/picolibc.git
[submodule "lib/stm32-svd"]
path = lib/stm32-svd
url = https://github.com/tinygo-org/stm32-svd
[submodule "lib/musl"]
path = lib/musl
url = https://github.com/tinygo-org/musl-libc.git
[submodule "lib/binaryen"]
path = lib/binaryen
url = https://github.com/WebAssembly/binaryen.git
[submodule "lib/mingw-w64"]
path = lib/mingw-w64
url = https://github.com/mingw-w64/mingw-w64.git
[submodule "lib/macos-minimal-sdk"]
path = lib/macos-minimal-sdk
url = https://github.com/aykevl/macos-minimal-sdk.git
[submodule "src/net"]
path = src/net
url = https://github.com/tinygo-org/net.git
[submodule "lib/wasi-cli"]
path = lib/wasi-cli
url = https://github.com/WebAssembly/wasi-cli
[submodule "lib/bdwgc"]
path = lib/bdwgc
url = https://github.com/ivmai/bdwgc.git
================================================
FILE: BUILDING.md
================================================
# Building TinyGo
TinyGo depends on LLVM and libclang, which are both big C++ libraries. It can
also optionally use a built-in lld to ease cross compiling. There are two ways
these can be linked: dynamically and statically. An install with `go install` is
dynamic linking because it is fast and works almost out of the box on
Debian-based systems with the right packages installed.
This guide describes how to statically link TinyGo against LLVM, libclang and
lld so that the binary can be easily moved between systems. It also shows how to
build a release tarball that includes this binary and all necessary extra files.
**Note**: this documentation describes how to build a statically linked release
tarball. If you want to help with development of TinyGo itself, you should follow the guide located at https://tinygo.org/docs/guides/build/
## Dependencies
LLVM, Clang and LLD are quite light on dependencies, requiring only standard
build tools to be built. Go is of course necessary to build TinyGo itself.
* Go (1.19+)
* GNU Make
* Standard build tools (gcc/clang)
* git
* CMake
* [Ninja](https://ninja-build.org/)
The rest of this guide assumes you're running Linux, but it should be equivalent
on a different system like Mac.
## Using GNU Make
The static build of TinyGo is driven by GNUmakefile, which provides a help target for quick reference:
% make help
clean Remove build directory
fmt Reformat source
fmt-check Warn if any source needs reformatting
gen-device Generate microcontroller-specific sources
llvm-source Get LLVM sources
llvm-build Build LLVM
tinygo Build the TinyGo compiler
lint Lint source tree
spell Spellcheck source tree
## Download the source
The first step is to download the TinyGo sources (use `--recursive` if you clone
the git repository). Then, inside the directory, download the LLVM source:
make llvm-source
You can also store LLVM outside of the TinyGo root directory by setting the
`LLVM_BUILDDIR`, `CLANG_SRC` and `LLD_SRC` make variables, but that is not
covered by this guide.
## Build LLVM, Clang, LLD
Before starting the build, you may want to set the following environment
variables to speed up the build. Most Linux distributions ship with GCC as the
default compiler, but Clang is significantly faster and uses much less memory
while producing binaries that are about as fast.
export CC=clang
export CXX=clang++
The Makefile includes a default configuration that is good for most users. It
builds a release version of LLVM (optimized, no asserts) and includes all
targets supported by TinyGo:
make llvm-build
This can take over an hour depending on the speed of your system.
## Build TinyGo
The last step of course is to build TinyGo itself. This can again be done with
make:
make
## Verify TinyGo
Try running TinyGo:
./build/tinygo help
Also, make sure the `tinygo` binary really is statically linked. The command to check for
dynamic dependencies differs depending on your operating system.
On Linux, use `ldd` (not to be confused with `lld`):
ldd ./build/tinygo
On macOS, use otool -L:
otool -L ./build/tinygo
The result should not contain libclang or libLLVM.
## Make a release tarball
Now that we have a working static build, it's time to make a release tarball:
make release
If you did not clone the repository with the `--recursive` option, you will get errors until you initialize the project submodules:
git submodule update --init
The release tarball is stored in build/release.tar.gz, and can be extracted with
the following command (for example in ~/lib):
tar -xvf path/to/release.tar.gz
TinyGo will get extracted to a `tinygo` directory. You can then call it with:
./tinygo/bin/tinygo
================================================
FILE: CHANGELOG.md
================================================
0.40.1
---
* **machine**
- nrf: fix flash writes when SoftDevice is enabled
* **runtime**
- runtime: avoid fixed math/rand sequence on RP2040/RP2350 (#5124)
- runtime: add calls to initRand() during run() for all schedulers
- runtime: call initRand() before initHeap() during initialization
- runtime: use rand_hwrng hardwareRand for RP2040/RP2350 (#5135)
* **libs**
- picolibc: use updated location for git repo
0.40.0
---
* **general**
- all: add full LLVM 20 support
- core: feat: enable //go:linkname pragma for globals
- core: feature: Add flag to ignore go compatibility matrix (#5078)
- chore: update version for 0.40 development cycle
* **compiler**
- emit an error when the actual arch doesn't match GOARCH
- mark string parameters as readonly
- use Tarjan's SCC algorithm to detect loops for defer
- lower "large stack" limit to 16kb
* **core**
- shrink bdwgc library
- Fix linker errors for runtime.vgetrandom and crypto/internal/sysrand.fatal
- fix: add TryLock to sync.RWMutex
- fix: correct linter issues exposed by the fix in #4679
- fix: don't hardcode success return state
- fix: expand RTT debugger compatibility
- internal/task (threads): save stack bounds instead of scanning under a lock
- internal/task: create detached threads and fix error handling
- interp: better errors when debugging interp
- transform (gc): create stack slots in callers of external functions
- internal/task: prevent semaphore resource leak for threads scheduler
* **machine**
- cortexm: optimize code size for the HardFault_Handler
- fe310: add I2C pins for the HiFive1b
- clarify WriteAt semantics of BlockDevice
- fix deprecated AsmFull comment (#5005)
- make sure DMA buffers do not escape unnecessarily
- only enable USB-CDC when needed
- use larger SPI MAXCNT on nrf52833 and nrf52840
- fix: update m.queuedBytes when clamping output to avoid corrupting sentBytes
- fix: use int64 in ReadTemperature to avoid overflow
- fix(rp2): disable DBGPAUSE on startup
- fix(rp2): possible integer overflow while computing factors for SPI baudrate
- fix(rp2): reset spinlocks at startup
- fix(rp2): switch spinlock busy loop to wfe
- fix(rp2): use side-effect-free spinlocks
- nrf: add ADC_VDDH which is an ADC pin for VDDH
- nrf: don't block SPI transfer
- nrf: don't set PSELN, it's ignored in single ended mode anyway
- nrf: fix typo in ADC configuration
- nrf: refactor SoftDevice enabled check
- nrf: rename pwmPin to adcPin
- nrf: support flash operations while the SoftDevice is enabled
- rp2040: allow writing to the UART inside interrupts
- machine,nrf528: stop the bus only once on I2C bus error and ensures the first error is returned
* **net**
- update submodule to latest commits
* **runtime**
- (avr): fix infinite longjmp loop if stack is aligned to 256 bytes
- (gc_blocks.go): clear full size of allocation
- (gc_blocks.go): make sweep branchless
- (gc_blocks.go): simplify scanning logic
- (gc_blocks.go): use a linked stack to scan marked objects
- (gc_blocks.go): use best-fit allocation
- (gc_boehm.go): fix world already stopped check
- (wasm): scan the system stack
- fix sleep duration for long sleeps
- remove copied code for nrf52840
- src/syscall: update src buffer after write
- wasm: fix C realloc and optimize it a bit
* **targets**
- add xiao-esp32s3 board target
- Add ESP32-S3 support (#5091)
- Added Gopher ARCADE board
- Create "pico2-ice" target board (#5062)
* **build/test**
- Add testing.T.Context() and testing.B.Context()
- create separate go.mod file for testing dependencies for wasm tests that use Chromium headless browser to avoid use of older incompatible version.
- go back to normal scheduler instead of tasks scheduler for macos CI
- update CI to use Go 1.25.5
- update macOS GH actions builds to handle sunset of macOS 13
- use task scheduler on macOS builds to avoid test race condition lockups
- update all CI builds to use latest stable Go release. Also update some of the actions to their latest releases.
- update GH actions builds to use Go 1.25.4
- uninstall cmake before install
- fix: point the submodule for musl-lib to a mirror in the TinyGo GitHub org
- fix: remove macOS 15 from CI build matrix (conflicts with macOS 14 build)
- fix: separate host expected bytes from device intended bytes
- fix/typo: makeESPFirmwareImage
- make: GNUmakefile: shrink TinyGo binaries on Linux
- move the directory list into a variable
- several improvements to the macOS GH actions build
- Fix for #4678: top-level 'make lint' wasn't working
- fix: increase the timeout for chromedp to connect to the headless browser used for running the wasm tests.
- testdata: some more packages for the test corpus
0.39.0
---
* **general**
- all: add Go 1.25 support
- net: update to latest tinygo net package
- docs: clarify build verification step for macOS users
- Add flag to skip Renesas SVD builds
* **build**
- Makefile: install missing dlmalloc files
- flash: add -o flag support to save built binary (Fixes #4937) (#4942)
- fix: update version of clang to 17 to accommodate latest Go 1.25 docker base image
* **ci**
- chore: update all CI builds to test Go 1.25 release
- fix: disable test-newest since CircleCI seems unable to download due to rate-limits on Dockerhub
- ci: rename some jobs to avoid churn on every Go/LLVM version bump
- ci: make the goroutines test less racy
- tests: de-flake goroutines test
* **compiler**
- compiler: implement internal/abi.Escape
* **main**
- main: show the compiler error (if any) for `tinygo test -c`
- chore: correct GOOS=js name in error messages for WASM
* **machine**
- machine: add international keys
- machine: remove some unnecessary "// peripherals:" comments
- machine: add I2C pin comments
- machine: standardize I2C errors with "i2c:" prefix
- machine: make I2C usable in the simulator
- fix: add SPI and I2C to teensy 4.1 (#4943)
- `rp2`: use the correct channel mask for rp2350 ADC; hold lock during read (#4938)
- `rp2`: disable digital input for analog inputs
* **runtime**
- runtime: ensure time.Sleep(d) sleeps at least d
- runtime: stub out weak pointer support
- runtime: implement dummy AddCleanup
- runtime: enable multi-core scheduler for rp2350
- `internal/task`: use -stack-size flag when starting a new thread
- `internal/task`: add SA_RESTART flag to GC interrupts
- `internal/task`: a few small correctness fixes
- `internal/gclayout`: make gclayout values constants
- darwin: add threading support and use it by default
* **standard library**
- `sync`: implement sync.Swap
- `reflect`: implement Method.IsExported
* **testing**
- testing: stub out testing.B.Loop
* **targets**
- `stm32`: add support for the STM32L031G6U6
- add metro-rp2350 board definition (#4989)
- `rp2040/rp2350`: set the default stack size to 8k for rp2040/rp2350 based boards where this was not already the case
0.38.0
---
* **general**
- `go.*`: upgrade `golang.org/x/tools` to v0.30.0
- `all`: add support for LLVM 20
* **build**
- go back to using MinoruSekine/setup-scoop for Windows CI builds
- `flake.*`: upgrade to nixpkgs 25.05, LLVM 20
- `Makefile`: only detect ccache command when needed
- `Makefile`: create random filename inside rule
- `Makefile`: don't set GOROOT
- `Makefile`: call uname at most once
- `Makefile`: only read NodeJS version when it is needed
* **compiler**
- add support for `GODEBUG=gotypesalias=1`
- `interp`: fix `copy()` from/to external buffers
- add `-nobounds` (similar to `-gcflags=-B`)
- `compileopts`: add library version to cached library path
- `builder`: build wasi-libc inside TinyGo
- `builder`: simplify bdwgc libc dependency
- `builder`: don't use precompiled libraries
- `compileopts`: enable support for `GOARCH=wasm` in `tinygo test`
* **fixes**
- `rp2350`: Fix DMA to SPI transmits on RP2350 (#4903)
- `microbit v2`: use OpenOCD flash method on microbit v2 when using Nordic Semi SoftDevice
- `main`: display all of the current GC options for the `-gc` flag
- Remove duplicated error handling
- `sync`: fix `TestMutexConcurrent` test
- fix race condition in `testdata/goroutines.go`
- fix build warnings on Windows ARM
* **machine**
- `usb`: add USB mass storage class support
- implement usb receive message throttling
- declare usb endpoints per-platform
- `samd21`: implement watchdog
- `samd51`: write to flash memory in 512 byte long chunks
- `samd21`: write to flash memory in 64 byte long chunks
- don't inline RTT `WriteByte` everywhere
- `rp2`: unexport machine-specific errors
- `rp2`: discount scheduling delays in I2C timeouts (#4876)
- use pointer receiver in simulated PWM peripherals
- add simulated PWM/timer peripherals
- `rp2`: expose usb endpoint stall handling
- `arm`: clear pending interrupts before enabling them
- `rp2`: merge common usb code (#4856)
* **main**
- add "cores" and "threads" schedulers to help text
- add `StartPos` and `EndPos` to `-json` build output
- change `-json` flag to match upstream Go
* **runtime**
- don't lock the print output inside interrupts
- don't try to interrupt other cores before they are started
- implement `NumCPU` for the multicore scheduler
- add support for multicore scheduler
- refactor obtaining the system stack
- `interrupt`: add `Checkpoint` type
- add `exportedFuncPtr`
- avoid an allocation in `(*time.Timer).Reset`
- stub runtime signal functions for `os/signal` on wasip1
- move `timeUnit` to a single place
- implement `NumCPU` for `-scheduler=threads`
- move `mainExited` boolean
- `internal/task`: rename `tinygo_pause` to `tinygo_task_exit`
- map every goroutine to a new OS thread
- refactor `timerQueue`
- make conservative and precise GC MT-safe
- `internal/task`: implement atomic primitives for preemptive scheduling
- Use diskutil on macOS to extract volume name and path for FAT mounts #4928
* **standard library**
- `net`: update submodule to latest commits
- `runtime/debug`: add GC related stubs
- `metrics`: flesh out some of the metric types
- `reflect`: Chan related stubs
- `os`: handle relative and abs paths in `Executable()`
- `os`: add `os.Executable()` for Darwin
- `sync`: implement `RWMutex` using futexes
- `reflect`: Add `SliceOf`, `ArrayOf`, `StructOf`, `MapOf`, `FuncOf`
* **targets**
- `rp2040`: add multicore support
- `riscv32`: use `gdb` binary as a fallback
- add target for Microbit v2 with SoftDevice S140 support for both peripheral and central
- `windows`: use MSVCRT.DLL instead of UCRT on i386
- `windows`: add windows/386 support
- `arm64`: remove unnecessary `.section` directive
- `riscv-qemu`: actually sleep in `time.Sleep()`
- `riscv`: define CSR constants and use them where possible
- `darwin`: support Boehm GC (and use by default)
- `windows`: add support for the Boehm-Demers-Weiser GC
- `windows`: fix wrong register for first parameter
* **wasm**
- add Boehm GC support
- refactor/modify stub signal handling
- don't block `//go:wasmexport` because of running goroutines
- use `int64` instead of `float64` for the `timeUnit`
* **boards**
- Add board support for BigTreeTech SKR Pico (#4842)
0.37.0
---
* **general**
- add the Boehm-Demers-Weiser GC on Linux
* **ci**
- add more tests for wasm and baremetal
* **compiler**
- crypto/internal/sysrand is allowed to use unsafe signatures
* **examples**
- add goroutine benchmark to examples
* **fixes**
- ensure use of pointers for SPI interface on atsam21/atsam51 and other machines/boards that were missing implementation (#4798)
- replace loop counter with hw timer for USB SetAddressReq on rp2040 (#4796)
* **internal**
- update to go.bytecodealliance.org@v0.6.2 in GNUmakefile and internal/wasm-tools
- exclude certain files when copying package in internal/cm
- update to go.bytecodealliance.org/cm@v0.2.2 in internal/cm
- remove old reflect.go in internal/reflectlite
* **loader**
- use build tags for package iter and iter methods on reflect.Value in loader, iter, reflect
- add shim for go1.22 and earlier in loader, iter
* **machine**
- bump rp2040 to 200MHz (#4768)
- correct register address for Pin.SetInterrupt for rp2350 (#4782)
- don't block the rp2xxx UART interrupt handler
- fix RP2040 Pico board on the playground
- add flash support for rp2350 (#4803)
* **os**
- add stub Symlink for wasm
* **refactor**
- use *SPI everywhere to make consistent for implementations. Fixes #4663 "in reverse" by making SPI a pointer everywhere, as discussed in the comments.
* **reflect**
- add Value.SetIter{Key,Value} and MapIter.Reset in reflect, internal/reflectlite
- embed reflectlite types into reflect types in reflect, internal/reflectlite
- add Go 1.24 iter.Seq[2] methods
- copy reflect iter tests from upstream Go
- panic on Type.CanSeq[2] instead of returning false
- remove strconv.go
- remove unused go:linkname functions
* **riscv-qemu**
- add VirtIO RNG device
- increase stack size
* **runtime**
- only allocate heap memory when needed
- remove unused file func.go
- use package reflectlite
* **transform**
- cherry-pick from #4774
0.36.0
---
* **general**
- add initial Go 1.24 support
- add support for LLVM 19
- update license for 2025
- make small corrections for README regarding wasm
- use GOOS and GOARCH for building wasm simulated boards
- only infer target for wasm when GOOS and GOARCH are set correctly, not just based on file extension
- add test-corpus-wasip2
- use older image for cross-compiling builds
- update Linux builds to run on ubuntu-latest since 20.04 is being retired
- ensure build output directory is created
- add NoSandbox flag to chrome headless that is run during WASM tests, since this is now required for Ubuntu 23+ and we are using Ubuntu 24+ when running Github Actions
- update wasmtime used for CI to 29.0.1 to fix issue with install during CI tests
- update to use `Get-CimInstance` as `wmic` is being deprecated on WIndows
- remove unnecessary executable permissions
- `goenv`: update to new v0.36.0 development version
* **compiler**
- `builder`: fix parsing of external ld.lld error messages
- `cgo`: mangle identifier names
- `interp`: correctly mark functions as modifying memory
- add buildmode=wasi-legacy to support existing base of users who expected the older behavior for wasi modules to not return an exit code as if they were reactors
* **standard library**
- `crypto/tls`: add Dialer.DialContext() to fix websocket client
- `crypto/tls`: add VersionTLS constants and VersionName(version uint16) method that turns it into a string, copied from big go
- `internal/syscall/unix`: use our own version of this package
- `machine`: replace hard-coded cpu frequencies on rp2xxx
- `machine`: bump rp2350 CPUFrequency to 150 MHz
- `machine`: compute rp2 clock dividers from crystal and target frequency
- `machine`: remove bytes package dependency in flash code
- `machine/usb/descriptor`: avoid bytes package
- `net`: update to latest submodule with httptest subpackage and ResolveIPAddress implementation
- `os`: add File.Chdir support
- `os`: implement stub Chdir for non-OS systems
- `os/file`: add file.Chmod
- `reflect`: implement Value.Equal
- `runtime`: add FIPS helper functions
- `runtime`: manually initialize xorshift state
- `sync`: move Mutex to internal/task
- `syscall`: add wasip1 RandomGet
- `testing`: add Chdir
- `wasip2`: add stubs to get internal/syscall/unix to work
* **fixes**
- correctly handle calls for GetRNG() when being made from nrf devices with SoftDevice enabled
- fix stm32f103 ADC
- `wasm`: correctly handle id lookup for finalizeRef call
- `wasm`: avoid total failure on wasm finalizer call
- `wasm`: convert offset as signed int into unsigned int in syscall/js.stringVal in wasm_exec.js
* **targets**
- rp2350: add pll generalized solution; fix ADC handles; pwm period fix
- rp2350: extending support to include the rp2350b
- rp2350: cleanup: unexport internal USB and clock package variable, consts and types
- nrf: make ADC resolution changeable
- turn on GC for TKey1 device, since it does in fact work
- match Pico2 stack size to Pico
* **boards**
- add support for Pimoroni Pico Plus2
- add target for pico2-w board
- add comboat_fw tag for elecrow W5 boards with Combo-AT Wifi firmware
- add support for Elecrow Pico rp2350 W5 boards
- add support for Elecrow Pico rp2040 W5 boards
- add support for NRF51 HW-651
- add support for esp32c3-supermini
- add support for waveshare-rp2040-tiny
* **examples**
- add naive debouncing for pininterrupt example
0.35.0
---
* **general**
- update cmsis-svd library
- use default UART settings in the echo example
- `goenv`: also show git hash with custom build of TinyGo
- `goenv`: support parsing development versions of Go
- `main`: parse extldflags early so we can report the error message
* **compiler**
- `builder`: whitelist temporary directory env var for Clang invocation to fix Windows bug
- `builder`: fix cache paths in `-size=full` output
- `builder`: work around incorrectly escaped DWARF paths on Windows (Clang bug)
- `builder`: fix wasi-libc path names on Windows with `-size=full`
- `builder`: write HTML size report
- `cgo`: support C identifiers only referred to from within macros
- `cgo`: support function-like macros
- `cgo`: support errno value as second return parameter
- `cgo`: add support for `#cgo noescape` lines
- `compiler`: fix bug in interrupt lowering
- `compiler`: allow panic directly in `defer`
- `compiler`: fix wasmimport -> wasmexport in error message
- `compiler`: support `//go:noescape` pragma
- `compiler`: report error instead of crashing when instantiating a generic function without body
- `interp`: align created globals
* **standard library**
- `machine`: modify i2s interface/implementation to better match specification
- `os`: implement `StartProcess`
- `reflect`: add `Value.Clear`
- `reflect`: add interface support to `NumMethods`
- `reflect`: fix `AssignableTo` for named + non-named types
- `reflect`: implement `CanConvert`
- `reflect`: handle more cases in `Convert`
- `reflect`: fix Copy of non-pointer array with size > 64bits
- `runtime`: don't call sleepTicks with a negative duration
- `runtime`: optimize GC scanning (findHead)
- `runtime`: move constants into shared package
- `runtime`: add `runtime.fcntl` function for internal/syscall/unix
- `runtime`: heapptr only needs to be initialized once
- `runtime`: refactor scheduler (this fixes a few bugs with `-scheduler=none`)
- `runtime`: rewrite channel implementation to be smaller and more flexible
- `runtime`: use `SA_RESTART` when registering a signal for os/signal
- `runtime`: implement race-free signals using futexes
- `runtime`: run deferred functions in `Goexit`
- `runtime`: remove `Cond` which seems to be unused
- `runtime`: properly handle unix read on directory
- `runtime/trace`: stub all public methods
- `sync`: don't use volatile in `Mutex`
- `sync`: implement `WaitGroup` using a (pseudo)futex
- `sync`: make `Cond` parallelism-safe
- `syscall`: use wasi-libc tables for wasm/js target
* **targets**
- `mips`: fix a bug when scanning the stack
- `nintendoswitch`: get this target to compile again
- `rp2350`: add support for the new RP2350
- `rp2040/rp2350` : make I2C implementation shared for rp2040/rp2350
- `rp2040/rp2350` : make SPI implementation shared for rp2040/rp2350
- `rp2040/rp2350` : make RNG implementation shared for rp2040/rp2350
- `wasm`: revise and simplify wasmtime argument handling
- `wasm`: support `//go:wasmexport` functions after a call to `time.Sleep`
- `wasm`: correctly return from run() in wasm_exec.js
- `wasm`: call process.exit() when go.run() returns
- `windows`: don't return, exit via exit(0) instead to flush stdout buffer
* **boards**
- add support for the Tillitis TKey
- add support for the Raspberry Pi Pico2 (based on the RP2040)
- add support for Pimoroni Tiny2350
0.34.0
---
* **general**
- fix `GOOS=wasip1` for `tinygo test`
- add `-C DIR` flag
- add initial documentation for project governance
- add `-ldflags='-extldflags=...'` support
- improve usage message with `tinygo help` and when passing invalid parameters
* **compiler**
- `builder`: remove environment variables when invoking Clang, to avoid the environment changing the behavior
- `builder`: check for the Go toolchain version used to compile TinyGo
- `cgo`: add `C.CBytes` implementation
- `compiler`: fix passing weirdly-padded structs as parameters to new goroutines
- `compiler`: support pragmas on generic functions
- `compiler`: do not let the slice buffer escape when casting a `[]byte` or `[]rune` to a string, to help escape analysis
- `compiler`: conform to the latest iteration of the wasm types proposal
- `loader`: don't panic when main package is not named 'main'
- `loader`: make sure we always return type checker errors even without type errors
- `transform`: optimize range over `[]byte(string)`
* **standard library**
- `crypto/x509`: add package stub to build crypto/x509 on macOS
- `machine/usb/adc/midi`: fix `PitchBend`
- `os`: add `Truncate` stub for baremetal
- `os`: add stubs for `os.File` deadlines
- `os`: add internal `net.newUnixFile` for the net package
- `runtime`: stub runtime_{Before,After}Exec for linkage
- `runtime`: randomize map accesses
- `runtime`: support `maps.Clone`
- `runtime`: add more fields to `MemStats`
- `runtime`: implement newcoro, coroswitch to support package iter
- `runtime`: disallow defer in interrupts
- `runtime`: add support for os/signal on Linux and MacOS
- `runtime`: add gc layout info for some basic types to help the precise GC
- `runtime`: bump GC mark stack size to avoid excessive heap rescans
* **targets**
- `darwin`: use Go standard library syscall package instead of a custom one
- `fe310`: support GPIO `PinInput`
- `mips`: fix compiler crash with GOMIPS=softfloat and defer
- `mips`: add big-endian (GOARCH=mips) support
- `mips`: use MIPS32 (instead of MIPS32R2) as the instruction set for wider compatibility
- `wasi`: add relative and absolute --dir options to wasmtime args
- `wasip2`: add wasmtime -S args to support network interfaces
- `wasm`: add `//go:wasmexport` support (for all WebAssembly targets)
- `wasm`: use precise instead of conservative GC for WebAssembly (including WASI)
- `wasm-unknown`: add bulk memory flags since basically every runtime has it now
* **boards**
- add RAKwireless RAK4631
- add WaveShare ESP-C3-32S-Kit
0.33.0
---
* **general**
- use latest version of x/tools
- add chromeos 9p support for flashing
- sort compiler error messages by source position in a package
- don't include prebuilt libraries in the release to simplify packaging and reduce the release tarball size
- show runtime panic addresses for `tinygo run`
- support Go 1.23 (including all new language features)
- `test`: support GOOS/GOARCH pairs in the `-target` flag
- `test`: remove message after test binary built
* **compiler**
- remove unused registers for x86_64 linux syscalls
- remove old atomics workaround for AVR (not necessary in modern LLVM versions)
- support `golang.org/x/sys/unix` syscalls
- `builder`: remove workaround for generics race condition
- `builder`: add package ID to compiler and optimization error messages
- `builder`: show better error messages for some common linker errors
- `cgo`: support preprocessor macros passed on the command line
- `cgo`: use absolute paths for error messages
- `cgo`: add support for printf
- `loader`: handle `go list` errors inside TinyGo (for better error messages)
- `transform`: fix incorrect alignment of heap-to-stack transform
- `transform`: use thinlto-pre-link passes (instead of the full pipeline) to speed up compilation speed slightly
* **standard library**
- `crypto/tls`: add CipherSuiteName and some extra fields to ConnectionSTate
- `internal/abi`: implement initial version of this package
- `machine`: use new `internal/binary` package
- `machine`: rewrite Reply() to fix sending long replies in I2C Target Mode
- `machine/usb/descriptor`: Reset joystick physical
- `machine/usb/descriptor`: Drop second joystick hat
- `machine/usb/descriptor`: Add more HID... functions
- `machine/usb/descriptor`: Fix encoding of values
- `machine/usb/hid/joystick`: Allow more hat switches
- `os`: add `Chown`, `Truncate`
- `os/user`: use stdlib version of this package
- `reflect`: return correct name for the `unsafe.Pointer` type
- `reflect`: implement `Type.Overflow*` functions
- `runtime`: implement dummy `getAuxv` to satisfy golang.org/x/sys/
- `runtime`: don't zero out new allocations for `-gc=leaking` when they are already zeroed
- `runtime`: simplify slice growing/appending code
- `runtime`: print a message when a fatal signal like SIGSEGV happens
- `runtime/debug`: add `GoVersion` to `debug.BuildInfo`
- `sync`: add `Map.Clear()`
- `sync/atomic`: add And* and Or* compiler intrinsics needed for Go 1.23
- `syscall`: add `Fork` and `Execve`
- `syscall`: add all MacOS errno values
- `testing`: stub out `T.Deadline`
- `unique`: implement custom (naive) version of the unique package
* **targets**
- `arm`: support `GOARM=*,softfloat` (softfloat support for ARM v5, v6, and v7)
- `mips`: add linux/mipsle (and experimental linux/mips) support
- `mips`: add `GOMIPS=softfloat` support
- `wasip2`: add WASI preview 2 support
- `wasm/js`: add `node:` prefix in `require()` call of wasm_exec.js
- `wasm-unknown`: make sure the `os` package can be imported
- `wasm-unknown`: remove import-memory flag
0.32.0
---
* **general**
- fix wasi-libc include headers on Nix
- apply OpenOCD commands after target configuration
- fix a minor race condition when determining the build tags
- support UF2 drives with a space in their name on Linux
- add LLVM 18 support
- drop support for Go 1.18 to be able to stay up to date
* **compiler**
- move `-panic=trap` support to the compiler/runtime
- fix symbol table index for WebAssembly archives
- fix ed25519 build errors by adjusting the alias names
- add aliases to generic AES functions
- fix race condition by temporarily applying a proposed patch
- `builder`: keep un-wasm-opt'd .wasm if -work was passed
- `builder`: make sure wasm-opt command line is printed if asked
- `cgo`: implement shift operations in preprocessor macros
- `interp`: checking for methodset existence
* **standard library**
- `machine`: add `__tinygo_spi_tx` function to simulator
- `machine`: fix simulator I2C support
- `machine`: add GetRNG support to simulator
- `machine`: add `TxFifoFreeLevel` for CAN
- `os`: add `Link`
- `os`: add `FindProcess` for posix
- `os`: add `Process.Release` for unix
- `os`: add `SetReadDeadline` stub
- `os`, `os/signal`: add signal stubs
- `os/user`: add stubs for `Lookup{,Group}` and `Group`
- `reflect`: use int in `StringHeader` and `SliceHeader` on non-AVR platforms
- `reflect`: fix `NumMethods` for Interface type
- `runtime`: skip negative sleep durations in sleepTicks
* **targets**
- `esp32`: add I2C support
- `rp2040`: move UART0 and UART1 to common file
- `rp2040`: make all RP2040 boards available for simulation
- `rp2040`: fix timeUnit type
- `stm32`: add i2c `Frequency` and `SetBaudRate` function for chips that were missing implementation
- `wasm-unknown`: add math and memory builtins that LLVM needs
- `wasip1`: replace existing `-target=wasi` support with wasip1 as supported in Go 1.21+
* **boards**
- `adafruit-esp32-feather-v2`: add the Adafruit ESP32 Feather V2
- `badger2040-w`: add support for the Badger2040 W
- `feather-nrf52840-sense`: fix lack of LXFO
- `m5paper`: add support for the M5 Paper
- `mksnanov3`: limit programming speed to 1800 kHz
- `nucleol476rg`: add stm32 nucleol476rg support
- `pico-w`: add the Pico W (which is near-idential to the pico target)
- `thingplus-rp2040`, `waveshare-rp2040-zero`: add WS2812 definition
- `pca10059-s140v7`: add this variant to the PCA10059 board
0.31.2
---
* **general**
* update the `net` submodule to updated version with `Buffers` implementation
* **compiler**
* `syscall`: add wasm_unknown tag to some additional files so it can compile more code
* **standard library**
* `runtime`: add Frame.Entry field
0.31.1
---
* **general**
* fix Binaryen build in make task
* update final build stage of Docker `dev` image to go1.22
* only use GHA cache for building Docker `dev` image
* update the `net` submodule to latest version
* **compiler**
* `interp`: make getelementptr offsets signed
* `interp`: return a proper error message when indexing out of range
0.31.0
---
* **general**
* remove LLVM 14 support
* add LLVM 17 support, and use it by default
* add Nix flake support
* update bundled Binaryen to version 116
* add `ports` subcommand that lists available serial ports for `-port` and `-monitor`
* support wasmtime version 14
* add `-serial=rtt` for serial output over SWD
* add Go 1.22 support and use it by default
* change minimum Node.js version from 16 to 18
* **compiler**
* use the new LLVM pass manager
* allow systems with more stack space to allocate larger values on the stack
* `build`: fix a crash due to sharing GlobalValues between build instances
* `cgo`: add `C._Bool` type
* `cgo`: fix calling CGo callback inside generic function
* `compileopts`: set `purego` build tag by default so that more packages can be built
* `compileopts`: force-enable CGo to avoid build issues
* `compiler`: fix crash on type assert on interfaces with no methods
* `interp`: print LLVM instruction in traceback
* `interp`: support runtime times by running them at runtime
* `loader`: enforce Go language version in the type checker (this may break existing programs with an incorrect Go version in go.mod)
* `transform`: fix bug in StringToBytes optimization pass
* **standard library**
* `crypto/tls`: stub out a lot of functions
* `internal/task`, `machine`: make TinyGo code usable with "big Go" CGo
* `machine`: implement `I2C.SetBaudRate` consistently across chips
* `machine`: implement `SPI.Configure` consistently across chips
* `machine`: add `DeviceID` for nrf, rp2040, sam, stm32
* `machine`: use smaller UART buffer size on atmega chips
* `machine/usb`: allow setting a serial number using a linker flag
* `math`: support more math functions on baremetal (picolibc) systems
* `net`: replace entire net package with a new one based on the netdev driver
* `os/user`: add bare-bones implementation of this package
* `reflect`: stub `CallSlice` and `FuncOf`
* `reflect`: add `TypeFor[T]`
* `reflect`: update `IsZero` to Go 1.22 semantics
* `reflect`: move indirect values into interface when setting interfaces
* `runtime`: stub `Breakpoint`
* `sync`: implement trylock
* **targets**
* `atmega`: use UART double speed mode for fewer errors and higher throughput
* `atmega328pb`: refactor to enable extra uart
* `avr`: don't compile large parts of picolibc (math, stdio) for LLVM 17 support
* `esp32`: switch over to the official SVD file
* `esp32c3`: implement USB_SERIAL for USBCDC communication
* `esp32c3`: implement I2C
* `esp32c3`: implement RNG
* `esp32c3`: add more ROM functions and update linker script for the in-progress wifi support
* `esp32c3`: update to newer SVD files
* `rp2040`: add support for UART hardware flow control
* `rp2040`: add definition for `machine.PinToggle`
* `rp2040`: set XOSC startup delay multiplier
* `samd21`: add support for UART hardware flow control
* `samd51`: add support for UART hardware flow control
* `wasm`: increase default stack size to 64k for wasi/wasm targets
* `wasm`: bump wasi-libc version to SDK 20
* `wasm`: remove line of dead code in wasm_exec.js
* **new targets/boards**
* `qtpy-esp32c3`: add Adafruit QT Py ESP32-C3 board
* `mksnanov3`: add support for the MKS Robin Nano V3.x
* `nrf52840-generic`: add generic nrf52840 chip support
* `thumby`: add support for Thumby
* `wasm`: add new `wasm-unknown` target that doesn't depend on WASI or a browser
* **boards**
* `arduino-mkrwifi1010`, `arduino-nano33`, `nano-rp2040`, `matrixportal-m4`, `metro-m4-airlift`, `pybadge`, `pyportal`: add `ninafw` build tag and some constants for BLE support
* `gopher-badge`: fix typo in USB product name
* `nano-rp2040`: add UART1 and correct mappings for NINA via UART
* `pico`: bump default stack size from 2kB to 8kB
* `wioterminal`: expose UART4
0.30.0
---
* **general**
- add LLVM 16 support, use it by default
* **compiler**
- `build`: work around a race condition by building Go SSA serially
- `compiler`: fix a crash by not using the LLVM global context types
- `interp`: don't copy unknown values in `runtime.sliceCopy` to fix miscompile
- `interp`: fix crash in error report by not returning raw LLVM values
* **standard library**
- `machine/usb/adc/midi`: various improvements and API changes
- `reflect`: add support for `[...]T` → `[]T` in reflect
* **targets**
- `atsamd21`, `atsamd51`: add support for USB INTERRUPT OUT
- `rp2040`: always use the USB device enumeration fix, even in chips that supposedly have the HW fix
- `wasm`: increase default stack size to 32k for wasi/wasm
* **boards**
- `gobadge`: add GoBadge target as alias for PyBadge :)
- `gemma-m0`: add support for the Adafruit Gemma M0
0.29.0
---
* **general**
- Go 1.21 support
- use https for renesas submodule #3856
- ci: rename release-double-zipped to something more useful
- ci: update Node.js from version 14 to version 16
- ci: switch GH actions builds to use Go 1.21 final release
- docker: update clang to version 15
- docker: use Go 1.21 for Docker dev container build
- `main`: add target JSON file in `tinygo info` output
- `main`: improve detection of filesystems
- `main`: use `go env` instead of doing all detection manually
- make: add make task to generate Renesas device wrappers
- make: add task to check NodeJS version before running tests
- add submodule for Renesas SVD file mirror repo
- update to go-serial package v1.6.0
- `testing`: add Testing function
- `tools/gen-device-svd`: small changes needed for Renesas MCUs
* **compiler**
- `builder`: update message for max supported Go version
- `compiler,reflect`: NumMethods reports exported methods only
- `compiler`: add compiler-rt and wasm symbols to table
- `compiler`: add compiler-rt to wasm.json
- `compiler`: add min and max builtin support
- `compiler`: implement clear builtin for maps
- `compiler`: implement clear builtin for slices
- `compiler`: improve panic message when a runtime call is unavailable
- `compiler`: update .ll test output
- `loader`: merge go.env file which is now required starting in Go 1.21 to correctly get required packages
* **standard library**
- `os`: define ErrNoDeadline
- `reflect`: Add FieldByNameFunc
- `reflect`: add SetZero
- `reflect`: fix iterating over maps with interface{} keys
- `reflect`: implement Value.Grow
- `reflect`: remove unnecessary heap allocations
- `reflect`: use .key() instead of a type assert
- `sync`: add implementation from upstream Go for OnceFunc, OnceValue, and OnceValues
* **targets**
- `machine`: UART refactor (#3832)
- `machine/avr`: pin change interrupt
- `machine/macropad_rp2040`: add machine.BUTTON
- `machine/nrf`: add I2C timeout
- `machine/nrf`: wait for stop condition after reading from the I2C bus
- `machine/nRF52`: set SPI TX/RX lengths even data is empty. Fixes #3868 (#3877)
- `machine/rp2040`: add missing suffix to CMD_READ_STATUS
- `machine/rp2040`: add NoPin support
- `machine/rp2040`: move flash related functions into separate file from C imports for correct - LSP. Fixes #3852
- `machine/rp2040`: wait for 1000 us after flash reset to avoid issues with busy USB bus
- `machine/samd51,rp2040,nrf528xx,stm32`: implement watchdog
- `machine/samd51`: fix i2cTimeout was decreasing due to cache activation
- `machine/usb`: Add support for HID Keyboard LEDs
- `machine/usb`: allow USB Endpoint settings to be changed externally
- `machine/usb`: refactor endpoint configuration
- `machine/usb`: remove usbDescriptorConfig
- `machine/usb/hid,joystick`: fix hidreport (3) (#3802)
- `machine/usb/hid`: add RxHandler interface
- `machine/usb/hid`: rename Handler() to TxHandler()
- `wasi`: allow zero inodes when reading directories
- `wasm`: add support for GOOS=wasip1
- `wasm`: fix functions exported through //export
- `wasm`: remove i64 workaround, use BigInt instead
- `example`: adjust time offset
- `example`: simplify pininterrupt
* **boards**
- `targets`: add AKIZUKI DENSHI AE-RP2040
- `targets`: adding new uf2 target for PCA10056 (#3765)
0.28.0
---
* **general**
- fix parallelism in the compiler on Windows by building LLVM with thread support
- support qemu-user debugging
- make target JSON msd-volume-name an array
- print source location when a panic happens in -monitor
- `test`: don't print `ok` for a successful compile-only
* **compiler**
- `builder`: remove non-ThinLTO build mode
- `builder`: fail earlier if Go is not available
- `builder`: improve `-size=full` in a number of ways
- `builder`: implement Nordic DFU file writer in Go
- `cgo`: allow `LDFLAGS: --export=...`
- `compiler`: support recursive slice types
- `compiler`: zero struct padding during map operations
- `compiler`: add llvm.ident metadata
- `compiler`: remove `unsafe.Pointer(uintptr(v) + idx)` optimization (use `unsafe.Add` instead)
- `compiler`: add debug info to `//go:embed` data structures for better `-size` output
- `compiler`: add debug info to string constants
- `compiler`: fix a minor race condition
- `compiler`: emit correct alignment in debug info for global variables
- `compiler`: correctly generate reflect data for local named types
- `compiler`: add alloc attributes to `runtime.alloc`, reducing flash usage slightly
- `compiler`: for interface maps, use the original named type if available
- `compiler`: implement most math/bits functions as LLVM intrinsics
- `compiler`: ensure all defers have been seen before creating rundefers
* **standard library**
- `internal/task`: disallow blocking inside an interrupt
- `machine`: add `CPUReset`
- `machine/usb/hid`: add MediaKey support
- `machine/usb/hid/joystick`: move joystick under HID
- `machine/usb/hid/joystick`: allow joystick settings override
- `machine/usb/hid/joystick`: handle case where we cannot find the correct HID descriptor
- `machine/usb/hid/mouse`: add support for mouse back and forward
- `machine/usb`: add ability to override default VID, PID, manufacturer name, and product name
- `net`: added missing `TCPAddr` and `UDPAddr` implementations
- `os`: add IsTimeout function
- `os`: fix resource leak in `(*File).Close`
- `os`: add `(*File).Sync`
- `os`: implement `(*File).ReadDir` for wasi
- `os`: implement `(*File).WriteAt`
- `reflect`: make sure null bytes are supported in tags
- `reflect`: refactor this package to enable many new features
- `reflect`: add map type methods: `Elem` and `Key`
- `reflect`: add map methods: `MapIndex`, `MapRange`/`MapIter`, `SetMapIndex`, `MakeMap`, `MapKeys`
- `reflect`: add slice methods: `Append`, `MakeSlice`, `Slice`, `Slice3`, `Copy`, `Bytes`, `SetLen`
- `reflect`: add misc methods: `Zero`, `Addr`, `UnsafeAddr`, `OverflowFloat`, `OverflowInt`, `OverflowUint`, `SetBytes`, `Convert`, `CanInt`, `CanFloat`, `CanComplex`, `Comparable`
- `reflect`: add type methods: `String`, `PkgPath`, `FieldByName`, `FieldByIndex`, `NumMethod`
- `reflect`: add stubs for `Type.Method`, `CanConvert`, `ArrayOf`, `StructOf`, `MapOf`
- `reflect`: add stubs for channel select routines/types
- `reflect`: allow nil rawType to call Kind()
- `reflect`: ensure all ValueError panics have Kind fields
- `reflect`: add support for named types
- `reflect`: improve `Value.String()`
- `reflect`: set `Index` and `PkgPath` field in `Type.Field`
- `reflect`: `Type.AssignableTo`: you can assign anything to `interface{}`
- `reflect`: add type check to `Value.Field`
- `reflect`: let `TypeOf(nil)` return nil
- `reflect`: move `StructField.Anonymous` field to match upstream location
- `reflect`: add `UnsafePointer` for Func types
- `reflect`: `MapIter.Next` needs to allocate new keys/values every time
- `reflect`: fix `IsNil` for interfaces
- `reflect`: fix `Type.Name` to return an empty string for non-named types
- `reflect`: add `VisibleFields`
- `reflect`: properly handle embedded structs
- `reflect`: make sure `PointerTo` works for named types
- `reflect`: `Set`: convert non-interface to interface
- `reflect`: `Set`: fix direction of assignment check
- `reflect`: support channel directions
- `reflect`: print struct tags in Type.String()
- `reflect`: properly handle read-only values
- `runtime`: allow custom-gc SetFinalizer and clarify KeepAlive
- `runtime`: implement KeepAlive using inline assembly
- `runtime`: check for heap allocations inside interrupts
- `runtime`: properly turn pointer into empty interface when hashing
- `runtime`: improve map size hint usage
- `runtime`: zero map key/value on deletion to so GC doesn't see them
- `runtime`: print the address where a panic happened
- `runtime/debug`: stub `SetGCPercent`, `BuildInfo.Settings`
- `runtime/metrics`: add this package as a stub
- `syscall`: `Stat_t` timespec fields are Atimespec on darwin
- `syscall`: add `Timespec.Unix()` for wasi
- `syscall`: add fsync using libc
- `testing`: support -test.count
- `testing`: make test output unbuffered when verbose
- `testing`: add -test.skip
- `testing`: move runtime.GC() call to runN to match upstream
- `testing`: add -test.shuffle to order randomize test and benchmark order
* **targets**
- `arm64`: fix register save/restore to include vector registers
- `attiny1616`: add support for this chip
- `cortexm`: refactor EnableInterrupts and DisableInterrupts to avoid `arm.AsmFull`
- `cortexm`: enable functions in RAM for go & cgo
- `cortexm`: convert SystemStack from `AsmFull` to C inline assembly
- `cortexm`: fix crash due to wrong stack size offset
- `nrf`: samd21, stm32: add flash API
- `nrf`: fix memory issue in ADC read
- `nrf`: new peripheral type for nrf528xx chips
- `nrf`: implement target mode
- `nrf`: improve ADC and add oversampling, longer sample time, and reference voltage
- `rp2040`: change calling order for device enumeration fix to do first
- `rp2040`: rtc delayed interrupt
- `rp2040`: provide better errors for invalid pins on I2C and SPI
- `rp2040`: change uart to allow for a single pin
- `rp2040`: implement Flash interface
- `rp2040`: remove SPI `DataBits` property
- `rp2040`: unify all linker scripts using LDFLAGS
- `rp2040`: remove SPI deadline for improved performance
- `rp2040`: use 4MHz as default frequency for SPI
- `rp2040`: implement target mode
- `rp2040`: use DMA for send-only SPI transfers
- `samd21`: rearrange switch case for get pin cfg
- `samd21`: fix issue with WS2812 driver by making pin accesses faster
- `samd51`: enable CMCC cache for greatly improved performance
- `samd51`: remove extra BK0RDY clear
- `samd51`: implement Flash interface
- `samd51`: use correct SPI frequency
- `samd51`: remove extra BK0RDY clear
- `samd51`: fix ADC multisampling
- `wasi`: allow users to set the `runtime_memhash_tsip` or `runtime_memhash_fnv` build tags
- `wasi`: set `WASMTIME_BACKTRACE_DETAILS` when running in wasmtime.
- `wasm`: implement the `//go:wasmimport` directive
* **boards**
- `gameboy-advance`: switch to use register definitions in device/gba
- `gameboy-advance`: rename display and make pointer receivers
- `gopher-badge`: Added Gopher Badge support
- `lorae5`: add needed definition for UART2
- `lorae5`: correct mapping for I2C bus, add pin mapping to enable power
- `pinetime`: update the target file (rename from pinetime-devkit0)
- `qtpy`: fix bad pin assignment
- `wioterminal`: fix pin definition of BCM13
- `xiao`: Pins D4 & D5 are I2C1. Use pins D2 & D3 for I2C0.
- `xiao`: add DefaultUART
0.27.0
---
* **general**
- all: update musl
- all: remove "acm:"` prefix for USB vid/pid pair
- all: add support for LLVM 15
- all: use DWARF version 4
- all: add initial (incomplete) support for Go 1.20
- all: add `-gc=custom` option
- `main`: print ldflags including ThinLTO flags with -x
- `main`: fix error message when a serial port can't be accessed
- `main`: add `-timeout` flag to allow setting how long TinyGo will try looking for a MSD volume for flashing
- `test`: print PASS on pass when running standalone test binaries
- `test`: fix printing of benchmark output
- `test`: print package name when compilation failed (not just when the test failed)
* **compiler**
- refactor to support LLVM 15
- `builder`: print compiler commands while building a library
- `compiler`: fix stack overflow when creating recursive pointer types (fix for LLVM 15+ only)
- `compiler`: allow map keys and values of ≥256 bytes
- `cgo`: add support for `C.float` and `C.double`
- `cgo`: support anonymous enums included in multiple Go files
- `cgo`: add support for bitwise operators
- `interp`: add support for constant icmp instructions
- `transform`: fix memory corruption issues
* **standard library**
- `machine/usb`: remove allocs in USB ISR
- `machine/usb`: add `Port()` and deprecate `New()` to have the API better match the singleton that is actually being returned
- `machine/usb`: change HID usage-maximum to 0xFF
- `machine/usb`: add USB HID joystick support
- `machine/usb`: change to not send before endpoint initialization
- `net`: implement `Pipe`
- `os`: add stub for `os.Chtimes`
- `reflect`: stub out `Type.FieldByIndex`
- `reflect`: add `Value.IsZero` method
- `reflect`: fix bug in `.Field` method when the field fits in a pointer but the parent doesn't
- `runtime`: switch some `panic()` calls in the gc to `runtimePanic()` for consistency
- `runtime`: add xorshift-based fastrand64
- `runtime`: fix alignment for arm64, arm, xtensa, riscv
- `runtime`: implement precise GC
- `runtime/debug`: stub `PrintStack`
- `sync`: implement simple pooling in `sync.Pool`
- `syscall`: stubbed `Setuid`, Exec and friends
- `syscall`: add more stubs as needed for Go 1.20 support
- `testing`: implement `t.Setenv`
- `unsafe`: add support for Go 1.20 slice/string functions
* **targets**
- `all`: do not set stack size per board
- `all`: update picolibc to v1.7.9
- `atsame5x`: fix CAN extendedID handling
- `atsame5x`: reduce heap allocation
- `avr`: drop GNU toolchain dependency
- `avr`: fix .data initialization for binaries over 64kB
- `avr`: support ThinLTO
- `baremetal`: implements calloc
- `darwin`: fix `syscall.Open` on darwin/arm64
- `darwin`: fix error with `tinygo lldb`
- `esp`: use LLVM Xtensa linker instead of Espressif toolchain
- `esp`: use ThinLTO for Xtensa
- `esp32c3`: add SPI support
- `linux`: include musl `getpagesize` function in release
- `nrf51`: add ADC implementation
- `nrf52840`: add PDM support
- `riscv`: add "target-abi" metadata flag
- `rp2040`: remove mem allocation in GPIO ISR
- `rp2040`: avoid allocating clock on heap
- `rp2040`: add basic GPIO support for PIO
- `rp2040`: fix USB interrupt issue
- `rp2040`: fix RP2040-E5 USB errata
- `stm32`: always set ADC pins to pullups floating
- `stm32f1`, `stm32f4`: fix ADC by clearing the correct bit for rank after each read
- `stm32wl`: Fix incomplete RNG initialisation
- `stm32wlx`: change order for init so clock speeds are set before peripheral start
- `wasi`: makes wasmtime "run" explicit
- `wasm`: fix GC scanning of allocas
- `wasm`: allow custom malloc implementation
- `wasm`: remove `-wasm-abi=` flag (use `-target` instead)
- `wasm`: fix scanning of the stack
- `wasm`: fix panic when allocating 0 bytes using malloc
- `wasm`: always run wasm-opt even with `-scheduler=none`
- `wasm`: avoid miscompile with ThinLTO
- `wasm`: allow the emulator to expand `{tmpDir}`
- `wasm`: support ThinLTO
- `windows`: update mingw-w64 version to avoid linker warning
- `windows`: add ARM64 support
* **boards**
- Add Waveshare RP2040 Zero
- Add Arduino Leonardo support
- Add Adafruit KB2040
- Add Adafruit Feather M0 Express
- Add Makerfabs ESP32C3SPI35 TFT Touchscreen board
- Add Espressif ESP32-C3-DevKit-RUST-1 board
- `lgt92`: fix OpenOCD configuration
- `xiao-rp2040`: fix D9 and D10 constants
- `xiao-rp2040`: add pin definitions
0.26.0
---
* **general**
- remove support for LLVM 13
- remove calls to deprecated ioutil package
- move from `os.IsFoo` to `errors.Is(err, ErrFoo)`
- fix for builds using an Android host
- make interp timeout configurable from command line
- ignore ports with VID/PID if there is no candidates
- drop support for Go 1.16 and Go 1.17
- update serial package to v1.3.5 for latest bugfixes
- remove GOARM from `tinygo info`
- add flag for setting the goroutine stack size
- add serial port monitoring functionality
* **compiler**
- `cgo`: implement support for static functions
- `cgo`: fix panic when FuncType.Results is nil
- `compiler`: add aliases for `edwards25519/field.feMul` and `field.feSquare`
- `compiler`: fix incorrect DWARF type in some generic parameters
- `compiler`: use LLVM math builtins everywhere
- `compiler`: replace some math operation bodies with LLVM intrinsics
- `compiler`: replace math aliases with intrinsics
- `compiler`: fix `unsafe.Sizeof` for chan and map values
- `compileopts`: use tags parser from buildutil
- `compileopts`: use backticks for regexp to avoid extra escapes
- `compileopts`: fail fast on duplicate values in target field slices
- `compileopts`: fix windows/arm target triple
- `compileopts`: improve error handling when loading target/*.json
- `compileopts`: add support for stlink-dap programmer
- `compileopts`: do not complain about `-no-debug` on MacOS
- `goenv`: support `GOOS=android`
- `interp`: fix reading from external global
- `loader`: fix link error for `crypto/internal/boring/sig.StandardCrypto`
* **standard library**
- rename assembly files to .S extension
- `machine`: add PWM peripheral comments to pins
- `machine`: improve UARTParity slightly
- `machine`: do not export DFU_MAGIC_* constants on nrf52840
- `machine`: rename `PinInputPullUp`/`PinInputPullDown`
- `machine`: add `KHz`, `MHz`, `GHz` constants, deprecate `TWI_FREQ_*` constants
- `machine`: remove level triggered pin interrupts
- `machine`: do not expose `RESET_MAGIC_VALUE`
- `machine`: use `NoPin` constant where appropriate (instead of `0` for example)
- `net`: sync net.go with Go 1.18 stdlib
- `os`: add `SyscallError.Timeout`
- `os`: add `ErrProcessDone` error
- `reflect`: implement `CanInterface` and fix string `Index`
- `runtime`: make `MemStats` available to leaking collector
- `runtime`: add `MemStats.TotalAlloc`
- `runtime`: add `MemStats.Mallocs` and `Frees`
- `runtime`: add support for `time.NewTimer` and `time.NewTicker`
- `runtime`: implement `resetTimer`
- `runtime`: ensure some headroom for the GC to run
- `runtime`: make gc and scheduler asserts settable with build tags
- `runtime/pprof`: add `WriteHeapProfile`
- `runtime/pprof`: `runtime/trace`: stub some additional functions
- `sync`: implement `Map.LoadAndDelete`
- `syscall`: group WASI consts by purpose
- `syscall`: add WASI `{D,R}SYNC`, `NONBLOCK` FD flags
- `syscall`: add ENOTCONN on darwin
- `testing`: add support for -benchmem
* **targets**
- remove USB vid/pid pair of bootloader
- `esp32c3`: remove unused `UARTStopBits` constants
- `nrf`: implement `GetRNG` function
- `nrf`: `rp2040`: add `machine.ReadTemperature`
- `nrf52`: cleanup s140v6 and s140v7 uf2 targets
- `rp2040`: implement semi-random RNG based on ROSC based on pico-sdk
- `wasm`: add summary of wasm examples and fix callback bug
- `wasm`: do not allow undefined symbols (`--allow-undefined`)
- `wasm`: make sure buffers returned by `malloc` are kept until `free` is called
- `windows`: save and restore xmm registers when switching goroutines
* **boards**
- add Pimoroni's Tufty2040
- add XIAO ESP32C3
- add Adafruit QT2040
- add Adafruit QT Py RP2040
- `esp32c3-12f`: `matrixportal-m4`: `p1am-100`: remove duplicate build tags
- `hifive1-qemu`: remove this emulated board
- `wioterminal`: add UART3 for RTL8720DN
- `xiao-ble`: fix usbpid
0.25.0
---
* **command line**
- change to ignore PortReset failures
* **compiler**
- `compiler`: darwin/arm64 is aarch64, not arm
- `compiler`: don't clobber X18 and FP registers on darwin/arm64
- `compiler`: fix issue with methods on generic structs
- `compiler`: do not try to build generic functions
- `compiler`: fix type names for generic named structs
- `compiler`: fix multiple defined function issue for generic functions
- `compiler`: implement `unsafe.Alignof` and `unsafe.Sizeof` for generic code
* **standard library**
- `machine`: add DTR and RTS to Serialer interface
- `machine`: reorder pin definitions to improve pin list on tinygo.org
- `machine/usb`: add support for MIDI
- `machine/usb`: adjust buffer alignment (samd21, samd51, nrf52840)
- `machine/usb/midi`: add `NoteOn`, `NoteOff`, and `SendCC` methods
- `machine/usb/midi`: add definition of MIDI note number
- `runtime`: add benchmarks for memhash
- `runtime`: add support for printing slices via print/println
* **targets**
- `avr`: fix some apparent mistake in atmega1280/atmega2560 pin constants
- `esp32`: provide hardware pin constants
- `esp32`: fix WDT reset on the MCH2022 badge
- `esp32`: optimize SPI transmit
- `esp32c3`: provide hardware pin constants
- `esp8266`: provide hardware pin constants like `GPIO2`
- `nrf51`: define and use `P0_xx` constants
- `nrf52840`, `samd21`, `samd51`: unify bootloader entry process
- `nrf52840`, `samd21`, `samd51`: change usbSetup and sendZlp to public
- `nrf52840`, `samd21`, `samd51`: refactor handleStandardSetup and initEndpoint
- `nrf52840`, `samd21`, `samd51`: improve usb-device initialization
- `nrf52840`, `samd21`, `samd51`: move usbcdc to machine/usb/cdc
- `rp2040`: add usb serial vendor/product ID
- `rp2040`: add support for usb
- `rp2040`: change default for serial to usb
- `rp2040`: add support for `machine.EnterBootloader`
- `rp2040`: turn off pullup/down when input type is not specified
- `rp2040`: make picoprobe default openocd interface
- `samd51`: add support for `DAC1`
- `samd51`: improve TRNG
- `wasm`: stub `runtime.buffered`, `runtime.getchar`
- `wasi`: make leveldb runtime hash the default
* **boards**
- add Challenger RP2040 LoRa
- add MCH2022 badge
- add XIAO RP2040
- `clue`: remove pins `D21`..`D28`
- `feather-rp2040`, `macropad-rp2040`: fix qspi-flash settings
- `xiao-ble`: add support for flash-1200-bps-reset
- `gopherbot`, `gopherbot2`: add these aliases to simplify for newer users
0.24.0
---
* **command line**
- remove support for go 1.15
- remove support for LLVM 11 and LLVM 12
- add initial Go 1.19 beta support
- `test`: fix package/... syntax
* **compiler**
- add support for the embed package
- `builder`: improve error message for "command not found"
- `builder`: add support for ThinLTO on MacOS and Windows
- `builder`: free LLVM objects after use, to reduce memory leaking
- `builder`: improve `-no-debug` error messages
- `cgo`: be more strict: CGo now requires every Go file to import the headers it needs
- `compiler`: alignof(func) is 1 pointer, not 2
- `compiler`: add support for type parameters (aka generics)
- `compiler`: implement `recover()` built-in function
- `compiler`: support atomic, volatile, and LLVM memcpy-like functions in defer
- `compiler`: drop support for macos syscalls via inline assembly
- `interp`: do not try to interpret past task.Pause()
- `interp`: fix some buggy localValue handling
- `interp`: do not unroll loops
- `transform`: fix MakeGCStackSlots that caused a possible GC bug on WebAssembly
* **standard library**
- `os`: enable os.Stdin for baremetal target
- `reflect`: add `Value.UnsafePointer` method
- `runtime`: scan GC globals conservatively on Windows, MacOS, Linux and Nintendo Switch
- `runtime`: add per-map hash seeds
- `runtime`: handle nil map write panics
- `runtime`: add stronger hash functions
- `syscall`: implement `Getpagesize`
* **targets**
- `atmega2560`: support UART1-3 + example for uart
- `avr`: use compiler-rt for improved float64 support
- `avr`: simplify timer-based time
- `avr`: fix race condition in stack write
- `darwin`: add support for `GOARCH=arm64` (aka Apple Silicon)
- `darwin`: support `-size=short` and `-size=full` flag
- `rp2040`: replace sleep 'busy loop' with timer alarm
- `rp2040`: align api for `PortMaskSet`, `PortMaskClear`
- `rp2040`: fix GPIO interrupts
- `samd21`, `samd51`, `nrf52840`: add support for USBHID (keyboard / mouse)
- `wasm`: update wasi-libc version
- `wasm`: use newer WebAssembly features
* **boards**
- add Badger 2040
- `matrixportal-m4`: attach USB DP to the correct pin
- `teensy40`: add I2C support
- `wioterminal`: fix I2C definition
0.23.0
---
* **command line**
- add `-work` flag
- add Go 1.18 support
- add LLVM 14 support
- `run`: add support for command-line parameters
- `build`: calculate default output path if `-o` is not specified
- `build`: add JSON output
- `test`: support multiple test binaries with `-c`
- `test`: support flags like `-v` on all targets (including emulated firmware)
* **compiler**
- add support for ThinLTO
- use compiler-rt from LLVM
- `builder`: prefer GNU build ID over Go build ID for caching
- `builder`: add support for cross compiling to Darwin
- `builder`: support machine outlining pass in stacksize calculation
- `builder`: disable asynchronous unwind tables
- `compileopts`: fix emulator configuration on non-amd64 Linux architectures
- `compiler`: move allocations > 256 bytes to the heap
- `compiler`: fix incorrect `unsafe.Alignof` on some 32-bit architectures
- `compiler`: accept alias for slice `cap` builtin
- `compiler`: allow slices of empty structs
- `compiler`: fix difference in aliases in interface methods
- `compiler`: make `RawSyscall` an alias for `Syscall`
- `compiler`: remove support for memory references in `AsmFull`
- `loader`: only add Clang header path for CGo
- `transform`: fix poison value in heap-to-stack transform
* **standard library**
- `internal/fuzz`: add this package as a shim
- `os`: implement readdir for darwin and linux
- `os`: add `DirFS`, which is used by many programs to access readdir.
- `os`: isWine: be compatible with older versions of wine, too
- `os`: implement `RemoveAll`
- `os`: Use a `uintptr` for `NewFile`
- `os`: add stubs for `exec.ExitError` and `ProcessState.ExitCode`
- `os`: export correct values for `DevNull` for each OS
- `os`: improve support for `Signal` by fixing various bugs
- `os`: implement `File.Fd` method
- `os`: implement `UserHomeDir`
- `os`: add `exec.ProcessState` stub
- `os`: implement `Pipe` for darwin
- `os`: define stub `ErrDeadlineExceeded`
- `reflect`: add stubs for more missing methods
- `reflect`: rename `reflect.Ptr` to `reflect.Pointer`
- `reflect`: add `Value.FieldByIndexErr` stub
- `runtime`: fix various small GC bugs
- `runtime`: use memzero for leaking collector instead of manually zeroing objects
- `runtime`: implement `memhash`
- `runtime`: implement `fastrand`
- `runtime`: add stub for `debug.ReadBuildInfo`
- `runtime`: add stub for `NumCPU`
- `runtime`: don't inline `runtime.alloc` with `-gc=leaking`
- `runtime`: add `Version`
- `runtime`: add stubs for `NumCgoCall` and `NumGoroutine`
- `runtime`: stub {Lock,Unlock}OSThread on Windows
- `runtime`: be able to deal with a very small heap
- `syscall`: make `Environ` return a copy of the environment
- `syscall`: implement getpagesize and munmap
- `syscall`: `wasi`: define `MAP_SHARED` and `PROT_READ`
- `syscall`: stub mmap(), munmap(), MAP_SHARED, PROT_READ, SIGBUS, etc. on nonhosted targets
- `syscall`: darwin: more complete list of signals
- `syscall`: `wasi`: more complete list of signals
- `syscall`: stub `WaitStatus`
- `syscall/js`: allow copyBytesTo(Go|JS) to use `Uint8ClampedArray`
- `testing`: implement `TempDir`
- `testing`: nudge type TB closer to upstream; should be a no-op change.
- `testing`: on baremetal platforms, use simpler test matcher
* **targets**
- `atsamd`: fix usbcdc initialization when `-serial=uart`
- `atsamd51`: allow higher frequency when using SPI
- `esp`: support CGo
- `esp32c3`: add support for input pin
- `esp32c3`: add support for GPIO interrupts
- `esp32c3`: add support to receive UART data
- `rp2040`: fix PWM bug at high frequency
- `rp2040`: fix some minor I2C bugs
- `rp2040`: fix incorrect inline assembly
- `rp2040`: fix spurious i2c STOP during write+read transaction
- `rp2040`: improve ADC support
- `wasi`: remove `--export-dynamic` linker flag
- `wasm`: remove heap allocator from wasi-libc
* **boards**
- `circuitplay-bluefruit`: move pin mappings so board can be compiled for WASM use in Playground
- `esp32-c3-12f`: add the ESP32-C3-12f Kit
- `m5stamp-c3`: add pin setting of UART
- `macropad-rp2040`: add the Adafruit MacroPad RP2040 board
- `nano-33-ble`: typo in LPS22HB peripheral definition and documentation (#2579)
- `teensy41`: add the Teensy 4.1 board
- `teensy40`: add ADC support
- `teensy40`: add SPI support
- `thingplus-rp2040`: add the SparkFun Thing Plus RP2040 board
- `wioterminal`: add DefaultUART
- `wioterminal`: verify written data when flashing through OpenOCD
- `xiao-ble`: add XIAO BLE nRF52840 support
0.22.0
---
* **command line**
- add asyncify to scheduler flag help
- support -run for tests
- remove FreeBSD target support
- add LLVM 12 and LLVM 13 support, use LLVM 13 by default
- add support for ARM64 MacOS
- improve help
- check /run/media as well as /media on Linux for non-debian-based distros
- `test`: set cmd.Dir even when running emulators
- `info`: add JSON output using the `-json` flag
* **compiler**
- `builder`: fix off-by-one in size calculation
- `builder`: handle concurrent library header rename
- `builder`: use flock to avoid double-compiles
- `builder`: use build ID as cache key
- `builder`: add -fno-stack-protector to musl build
- `builder`: update clang header search path to look in /usr/lib
- `builder`: explicitly disable unwind tables for ARM
- `cgo`: add support for `C.CString` and related functions
- `compiler`: fix ranging over maps with particular map types
- `compiler`: add correct debug location to init instructions
- `compiler`: fix emission of large object layouts
- `compiler`: work around AVR atomics bugs
- `compiler`: predeclare runtime.trackPointer
- `interp`: work around AVR function pointers in globals
- `interp`: run goroutine starts and checks at runtime
- `interp`: always run atomic and volatile loads/stores at runtime
- `interp`: bump timeout to 180 seconds
- `interp`: handle type assertions on nil interfaces
- `loader`: eliminate goroot cache inconsistency
- `loader`: respect $GOROOT when running `go list`
- `transform`: allocate the correct amount of bytes in an alloca
- `transform`: remove switched func lowering
* **standard library**
- `crypto/rand`: show error if platform has no rng
- `device/*`: add `*_Msk` field for each bit field and avoid duplicates
- `device/*`: provide Set/Get for each register field described in the SVD files
- `internal/task`: swap stack chain when switching goroutines
- `internal/task`: remove `-scheduler=coroutines`
- `machine`: add `Device` string constant
- `net`: add bare Interface implementation
- `net`: add net.Buffers
- `os`: stub out support for some features
- `os`: obey TMPDIR on unix, TMP on Windows, etc
- `os`: implement `ReadAt`, `Mkdir`, `Remove`, `Stat`, `Lstat`, `CreateTemp`, `MkdirAll`, `Chdir`, `Chmod`, `Clearenv`, `Unsetenv`, `Setenv`, `MkdirTemp`, `Rename`, `Seek`, `ExpandEnv`, `Symlink`, `Readlink`
- `os`: implement `File.Stat`
- `os`: fix `IsNotExist` on nonexistent path
- `os`: fix opening files on WASI in read-only mode
- `os`: work around lack of `syscall.seek` on 386 and arm
- `reflect`: make sure indirect pointers are handled correctly
- `runtime`: allow comparing interfaces
- `runtime`: use LLVM intrinsic to read the stack pointer
- `runtime`: strengthen hashmap hash function for structs and arrays
- `runtime`: fix float/complex hashing
- `runtime`: fix nil map dereference
- `runtime`: add realloc implementation to GCs
- `runtime`: handle negative sleep times
- `runtime`: correct GC scan bounds
- `runtime`: remove extalloc GC
- `rumtime`: implement `__sync` libcalls as critical sections for most microcontrollers
- `runtime`: add stubs for `Func.FileLine` and `Frame.PC`
- `sync`: fix concurrent read-lock on write-locked RWMutex
- `sync`: add a package doc
- `sync`: add tests
- `syscall`: add support for `Mmap` and `Mprotect`
- `syscall`: fix array size for mmap slice creation
- `syscall`: enable `Getwd` in wasi
- `testing`: add a stub for `CoverMode`
- `testing`: support -bench option to run benchmarks matching the given pattern.
- `testing`: support b.SetBytes(); implement sub-benchmarks.
- `testing`: replace spaces with underscores in test/benchmark names, as upstream does
- `testing`: implement testing.Cleanup
- `testing`: allow filtering subbenchmarks with the `-bench` flag
- `testing`: implement `-benchtime` flag
- `testing`: print duration
- `testing`: allow filtering of subtests using `-run`
* **targets**
- `all`: change LLVM features to match vanilla Clang
- `avr`: use interrupt-based timer which is much more accurate
- `nrf`: fix races in I2C
- `samd51`: implement TRNG for randomness
- `stm32`: pull-up on I2C lines
- `stm32`: fix timeout for i2c comms
- `stm32f4`, `stm32f103`: initial implementation for ADC
- `stm32f4`, `stm32f7`, `stm32l0x2`, `stm32l4`, `stm32l5`, `stm32wl`: TRNG implementation in crypto/rand
- `stm32wl`: add I2C support
- `windows`: add support for the `-size=` flag
- `wasm`: add support for `tinygo test`
- `wasi`, `wasm`: raise default stack size to 16 KiB
* **boards**
- add M5Stack
- add lorae5 (stm32wle) support
- add Generic Node Sensor Edition
- add STM32F469 Discovery
- add M5Stamp C3
- add Blues Wireless Swan
- `bluepill`: add definitions for ADC pins
- `stm32f4disco`: add definitions for ADC pins
- `stm32l552ze`: use supported stlink interface
- `microbit-v2`: add some pin definitions
0.21.0
---
* **command line**
- drop support for LLVM 10
- `build`: drop support for LLVM targets in the -target flag
- `build`: fix paths in error messages on Windows
- `build`: add -p flag to set parallelism
- `lldb`: implement `tinygo lldb` subcommand
- `test`: use emulator exit code instead of parsing test output
- `test`: pass testing arguments to wasmtime
* **compiler**
- use -opt flag for optimization level in CFlags (-Os, etc)
- `builder`: improve accuracy of the -size=full flag
- `builder`: hardcode some more frame sizes for __aeabi_* functions
- `builder`: add support for -size= flag for WebAssembly
- `cgo`: fix line/column reporting in syntax error messages
- `cgo`: support function definitions in CGo headers
- `cgo`: implement rudimentary C array decaying
- `cgo`: add support for stdio in picolibc and wasi-libc
- `cgo`: run CGo parser per file, not per CGo fragment
- `compiler`: fix unintentionally exported math functions
- `compiler`: properly implement div and rem operations
- `compiler`: add support for recursive function types
- `compiler`: add support for the `go` keyword on interface methods
- `compiler`: add minsize attribute for -Oz
- `compiler`: add "target-cpu" and "target-features" attributes
- `compiler`: fix indices into strings and arrays
- `compiler`: fix string compare functions
- `interp`: simplify some code to avoid some errors
- `interp`: support recursive globals (like linked lists) in globals
- `interp`: support constant globals
- `interp`: fix reverting of extractvalue/insertvalue with multiple indices
- `transform`: work around renamed return type after merging LLVM modules
* **standard library**
- `internal/bytealg`: fix indexing error in Compare()
- `machine`: support Pin.Get() function when the pin is configured as output
- `net`, `syscall`: Reduce code duplication by switching to internal/itoa.
- `os`: don't try to read executable path on baremetal
- `os`: implement Getwd
- `os`: add File.WriteString and File.WriteAt
- `reflect`: fix type.Size() to account for struct padding
- `reflect`: don't construct an interface-in-interface value
- `reflect`: implement Value.Elem() for interface values
- `reflect`: fix Value.Index() in a specific case
- `reflect`: add support for DeepEqual
- `runtime`: add another set of invalid unicode runes to encodeUTF8()
- `runtime`: only initialize os.runtime_args when needed
- `runtime`: only use CRLF on baremetal systems for println
- `runtime/debug`: stub `debug.SetMaxStack`
- `runtime/debug`: stub `debug.Stack`
- `testing`: add a stub for t.Parallel()
- `testing`: add support for -test.short flag
- `testing`: stub B.ReportAllocs()
- `testing`: add `testing.Verbose`
- `testing`: stub `testing.AllocsPerRun`
* **targets**
- fix gen-device-svd to handle 64-bit values
- add CPU and Features property to all targets
- match LLVM triple to the one Clang uses
- `atsam`: simplify definition of SERCOM UART, I2C and SPI peripherals
- `atsam`: move I2S0 to machine file
- `esp32`: fix SPI configuration
- `esp32c3`: add support for GDB debugging
- `esp32c3`: add support for CPU interrupts
- `esp32c3`: use tasks scheduler by default
- `fe310`: increase CPU frequency from 16MHz to 320MHz
- `fe310`: add support for bit banging drivers
- `linux`: build static binaries using musl
- `linux`: reduce binary size by calling `write` instead of `putchar`
- `linux`: add support for GOARM
- `riscv`: implement 32-bit atomic operations
- `riscv`: align the heap to 16 bytes
- `riscv`: switch to tasks-based scheduler
- `rp2040`: add CPUFrequency()
- `rp2040`: improve I2C baud rate configuration
- `rp2040`: add pin interrupt API
- `rp2040`: refactor PWM code and fix Period calculation
- `stm32f103`: fix SPI
- `stm32f103`: make SPI frequency selection more flexible
- `qemu`: signal correct exit code to QEMU
- `wasi`: run C/C++ constructors at startup
- `wasm`: ensure heapptr is aligned
- `wasm`: update wasi-libc dependency
- `wasm`: wasi: use asyncify
- `wasm`: support `-scheduler=none`
- `windows`: add support for Windows (amd64 only for now)
* **boards**
- `feather-stm32f405`, `feather-rp2040`: add I2C pin names
- `m5stack-core2`: add M5Stack Core2
- `nano-33-ble`: SoftDevice s140v7 support
- `nano-33-ble`: add constants for more on-board pins
0.20.0
---
* **command line**
- add support for Go 1.17
- improve Go version detection
- add support for the Black Magic Probe (BMP)
- add a flag for creating cpu profiles
* **compiler**
- `builder:` list libraries at the end of the linker command
- `builder:` strip debug information at link time instead of at compile time
- `builder:` add missing error check for `ioutil.TempFile()`
- `builder:` simplify running of jobs
- `compiler:` move LLVM math builtin support into the compiler
- `compiler:` move math aliases from the runtime to the compiler
- `compiler:` add aliases for many hashing packages
- `compiler:` add `*ssa.MakeSlice` bounds tests
- `compiler:` fix max possible slice
- `compiler:` add support for new language features of Go 1.17
- `compiler:` fix equally named structs in different scopes
- `compiler:` avoid zero-sized alloca in channel operations
- `interp:` don't ignore array indices for untyped objects
- `interp:` keep reverted package initializers in order
- `interp:` fix bug in compiler-time/run-time package initializers
- `loader:` fix panic in CGo files with syntax errors
- `transform:` improve GC stack slot pass to work around a bug
* **standard library**
- `crypto/rand`: switch to `arc4random_buf`
- `math:` fix `math.Max` and `math.Min`
- `math/big`: fix undefined symbols error
- `net:` add MAC address implementation
- `os:` implement `os.Executable`
- `os:` add `SEEK_SET`, `SEEK_CUR`, and `SEEK_END`
- `reflect:` add StructField.IsExported method
- `runtime:` reset heapptr to heapStart after preinit()
- `runtime:` add `subsections_via_symbols` to assembly files on darwin
- `testing:` add subset implementation of Benchmark
- `testing:` test testing package using `tinygo test`
- `testing:` add support for the `-test.v` flag
* **targets**
- `386:` bump minimum requirement to the Pentium 4
- `arm:` switch to Thumb instruction set on ARM
- `atsamd:` fix copy-paste error for atsamd21/51 calibTrim block
- `baremetal`,`wasm`: support command line params and environment variables
- `cortexm:` fix stack overflow because of unaligned stacks
- `esp32c3:` add support for the ESP32-C3 from Espressif
- `nrf52840:` fix ram size
- `nxpmk66f18:` fix a suspicious bitwise operation
- `rp2040:` add SPI support
- `rp2040:` add I2C support
- `rp2040:` add PWM implementation
- `rp2040:` add openocd configuration
- `stm32:` add support for PortMask* functions for WS2812 support
- `unix:` fix time base for time.Now()
- `unix:` check for mmap error and act accordingly
- `wasm:` override dlmalloc heap implementation from wasi-libc
- `wasm:` align heap to 16 bytes
- `wasm:` add support for the crypto/rand package
* **boards**
- add `DefaultUART` to adafruit boards
- `arduino-mkrwifi1010:` add board definition for Arduino MKR WiFi 1010
- `arduino-mkrwifi1010:` fix pin definition of `NINA_RESETN`
- `feather-nrf52:` fix pin definition of uart
- `feather-rp2040:` add pin name definition
- `gameboy-advance:` fix ROM header
- `mdbt50qrx-uf2:` add Raytac MDBT50Q-RX Dongle with TinyUF2
- `nano-rp2040:` define `NINA_SPI` and fix wifinina pins
- `teensy40:` enable hardware UART reconfiguration, fix receive watermark interrupt
0.19.0
---
* **command line**
- don't consider compile-only tests as failing
- add -test flag for `tinygo list`
- escape commands while printing them with the -x flag
- make flash-command portable and safer to use
- use `extended-remote` instead of `remote` in GDB
- detect specific serial port IDs based on USB vid/pid
- add a flag to the command line to select the serial implementation
* **compiler**
- `cgo`: improve constant parser
- `compiler`: support chained interrupt handlers
- `compiler`: add support for running a builtin in a goroutine
- `compiler`: do not emit nil checks for loading closure variables
- `compiler`: skip context parameter when starting regular goroutine
- `compiler`: refactor method names
- `compiler`: add function and global section pragmas
- `compiler`: implement `syscall.rawSyscallNoError` in inline assembly
- `interp`: ignore inline assembly in markExternal
- `interp`: fix a bug in pointer cast workaround
- `loader`: fix testing a main package
* **standard library**
- `crypto/rand`: replace this package with a TinyGo version
- `machine`: make USBCDC global a pointer
- `machine`: make UART objects pointer receivers
- `machine`: define Serial as the default output
- `net`: add initial support for net.IP
- `net`: add more net compatibility
- `os`: add stub for os.ReadDir
- `os`: add FileMode constants from Go 1.16
- `os`: add stubs required for net/http
- `os`: implement process related functions
- `reflect`: implement AppendSlice
- `reflect`: add stubs required for net/http
- `runtime`: make task.Data a 64-bit integer to avoid overflow
- `runtime`: expose memory stats
- `sync`: implement NewCond
- `syscall`: fix int type in libc version
* **targets**
- `cortexm`: do not disable interrupts on abort
- `cortexm`: bump default stack size to 2048 bytes
- `nrf`: avoid heap allocation in waitForEvent
- `nrf`: don't trigger a heap allocation in SPI.Transfer
- `nrf52840`: add support for flashing with the BOSSA tool
- `rp2040`: add support for GPIO input
- `rp2040`: add basic support for ADC
- `rp2040`: gpio and adc pin definitions
- `rp2040`: implement UART
- `rp2040`: patch elf to checksum 2nd stage boot
- `stm32`: add PWM for most chips
- `stm32`: add support for pin interrupts
- `stm32f103`: add support for PinInputPullup / PinInputPulldown
- `wasi`: remove wasm build tag
* **boards**
- `feather-rp2040`: add support for this board
- `feather-nrf52840-sense`: add board definition for this board
- `pca10059`: support flashing from Windows
- `nano-rp2040`: add this board
- `nano-33-ble`: add support for this board
- `pico`: add the Raspberry Pi Pico board with the new RP2040 chip
- `qtpy`: add pin for neopixels
- all: add definition for ws2812 for supported boards
0.18.0
---
* **command line**
- drop support for Go 1.11 and 1.12
- throw an error when no target is specified on Windows
- improve error messages in `getDefaultPort()`, support for multiple ports
- remove `-cflags` and `-ldflags` flags
- implement `-ldflags="-X ..."`
- add `-print-allocs` flag that lets you print all heap allocations
- openocd commands in tinygo command line
- add `-llvm-features` parameter
- match `go test` output
- discover USB ports only, this will ignore f.ex. bluetooth
- use physicmal path instead of cached GOROOT in function getGoroot
- add goroot for snap installs
* **compiler**
- `builder`: add support for `-opt=0`
- `builder`, `compiler`: compile and cache packages in parallel
- `builder`: run interp per package
- `builder`: cache C and assembly file outputs
- `builder`: add support for `-x` flag to print commands
- `builder`: add optsize attribute while building the package
- `builder`: run function passes per package
- `builder`: hard code Clang compiler
- `compiler`: do not use `llvm.GlobalContext()`
- `compiler`: remove SimpleDCE pass
- `compiler`: do not emit nil checks for `*ssa.Alloc` instructions
- `compiler`: merge `runtime.typecodeID` and runtime.typeInInterface
- `compiler`: do not check for impossible type asserts
- `compiler`: fix use of global context: `llvm.Int32Type()`
- `compiler`: add interface IR test
- `compiler`: fix lack of method name in interface matching
- `compiler`: fix "fragment covers entire variable" bug
- `compiler`: optimize string literals and globals
- `compiler`: decouple func lowering from interface type codes
- `compiler`: add function attributes to some runtime calls
- `compiler`: improve position information in error messages
- `cgo`: add support for CFLAGS in .c files
- `interp`: support GEP on fixed (MMIO) addresses
- `interp`: handle `(reflect.Type).Elem()`
- `interp`: add support for runtime.interfaceMethod
- `interp`: make toLLVMValue return an error instead of panicking
- `interp`: add support for switch statement
- `interp`: fix phi instruction
- `interp`: remove map support
- `interp`: support extractvalue/insertvalue with multiple operands
- `transform`: optimize string comparisons against ""
- `transform`: optimize `reflect.Type` `Implements()` method
- `transform`: fix bug in interface lowering when signatures are renamed
- `transform`: don't rely on struct name of `runtime.typecodeID`
- `transform`: use IPSCCP pass instead of the constant propagation pass
- `transform`: fix func lowering assertion failure
- `transform`: do not lower zero-sized alloc to alloca
- `transform`: split interface and reflect lowering
* **standard library**
- `runtime`: add dummy debug package
- `machine`: fix data shift/mask in newUSBSetup
- `machine`: make `machine.I2C0` and similar objects pointers
- `machine`: unify usbcdc code
- `machine`: refactor PWM support
- `machine`: avoid heap allocations in USB code
- `reflect`: let `reflect.Type` be of interface type
- `reflect`: implement a number of stub functions
- `reflect`: check for access in the `Interface` method call
- `reflect`: fix `AssignableTo` and `Implements` methods
- `reflect`: implement `Value.CanAddr`
- `reflect`: implement `Sizeof` and `Alignof` for func values
- `reflect`: implement `New` function
- `runtime`: implement command line arguments in hosted environments
- `runtime`: implement environment variables for Linux
- `runtime`: improve timers on nrf, and samd chips
* **targets**
- all: use -Qunused-arguments only for assembly files
- `atmega1280`: add PWM support
- `attiny`: remove dummy UART
- `atsamd21`: improve SPI
- `atsamd51`: fix PWM support in atsamd51p20
- `atsamd5x`: improve SPI
- `atsamd51`, `atsame5x`: unify samd51 and same5x
- `atsamd51`, `atsamd21`: fix `ADC.Get()` value at 8bit and 10bit
- `atsame5x`: add support for CAN
- `avr`: remove I2C stubs from attiny support
- `cortexm`: check for `arm-none-eabi-gdb` and `gdb-multiarch` commands
- `cortexm`: add `__isr_vector` symbol
- `cortexm`: disable FPU on Cortex-M4
- `cortexm`: clean up Cortex-M target files
- `fe310`: fix SPI read
- `gameboy-advance`: Fix RGBA color interpretation
- `nrf52833`: add PWM support
- `stm32l0`: use unified UART logic
- `stm32`: move f103 (bluepill) to common i2c code
- `stm32`: separate altfunc selection for UART Tx/Rx
- `stm32`: i2c implementation for F7, L5 and L4 MCUs
- `stm32`: make SPI CLK fast to fix data issue
- `stm32`: support SPI on L4 series
- `unix`: avoid possible heap allocation with `-opt=0`
- `unix`: use conservative GC by default
- `unix`: use the tasks scheduler instead of coroutines
- `wasi`: upgrade WASI version to wasi_snapshot_preview1
- `wasi`: darwin: support basic file io based on libc
- `wasm`: only export explicitly exported functions
- `wasm`: use WASI ABI for exit function
- `wasm`: scan globals conservatively
* **boards**
- `arduino-mega1280`: add support for the Arduino Mega 1280
- `arduino-nano-new`: Add Arduino Nano w/ New Bootloader target
- `atsame54-xpro`: add initial support this board
- `feather-m4-can`: add initial support for this board
- `grandcentral-m4`: add board support for Adafruit Grand Central M4 (SAMD51)
- `lgt92`: update to new UART structure
- `microbit`: remove LED constant
- `microbit-v2`: add support for S113 SoftDevice
- `nucleol432`: add support for this board
- `nucleo-l031k6`: add this board
- `pca10059`: initial support for this board
- `qtpy`: fix msd-volume-name
- `qtpy`: fix i2c setting
- `teensy40`: move txBuffer allocation to UART declaration
- `teensy40`: add UART0 as alias for UART1
0.17.0
---
* **command line**
- switch to LLVM 11 for static builds
- support gdb debugging with AVR
- add support for additional openocd commands
- add `-x` flag to print commands
- use LLVM 11 by default when linking LLVM dynamically
- update go-llvm to use LLVM 11 on macOS
- bump go.bug.st/serial to version 1.1.2
- do not build LLVM with libxml to work around a bugo on macOS
- add support for Go 1.16
- support gdb daemonization on Windows
- remove support for LLVM 9, to fix CI
- kill OpenOCD if it does not exit with a regular quit signal
- support `-ocd-output` on Windows
* **compiler**
- `builder`: parallelize most of the build
- `builder`: remove unused cacheKey parameter
- `builder`: add -mcpu flag while building libraries
- `builder`: wait for running jobs to finish
- `cgo`: add support for variadic functions
- `compiler`: fix undefined behavior in wordpack
- `compiler`: fix incorrect "exported function" panic
- `compiler`: fix non-int integer constants (fixing a crash)
- `compiler`: refactor and add tests
- `compiler`: emit a nil check when slicing an array pointer
- `compiler`: saturate float-to-int conversions
- `compiler`: test float to int conversions and fix upper-bound calculation
- `compiler`: support all kinds of deferred builtins
- `compiler`: remove ir package
- `compiler`: remove unnecessary main.main call workaround
- `compiler`: move the setting of attributes to getFunction
- `compiler`: create runtime types lazily when needed
- `compiler`: move settings to a separate Config struct
- `compiler`: work around an ARM backend bug in LLVM
- `interp`: rewrite entire package
- `interp`: fix alignment of untyped globals
- `loader`: use name "main" for the main package
- `loader`: support imports from vendor directories
- `stacksize`: add support for DW_CFA_offset_extended
- `transform`: show better error message in coroutines lowering
* **standard library**
- `machine`: accept configuration struct for ADC parameters
- `machine`: make I2C.Configure signature consistent
- `reflect`: implement PtrTo
- `runtime`: refactor to simplify stack switching
- `runtime`: put metadata at the top end of the heap
* **targets**
- `atsam`: add a length check to findPinPadMapping
- `atsam`: improve USBCDC
- `atsam`: avoid infinite loop when USBCDC is disconnected
- `avr`: add SPI support for Atmega based chips
- `avr`: use Clang for compiling C and assembly files
- `esp32`: implement task based scheduler
- `esp32`: enable the FPU
- `esp8266`: implement task based scheduler
- `esp`: add compiler-rt library
- `esp`: add picolibc
- `nrf`: refactor code a bit to reduce duplication
- `nrf`: use SPIM peripheral instead of the legacy SPI peripheral
- `nrf`: update nrfx submodule to latest commit
- `nrf52840`: ensure that USB CDC interface is only initialized once
- `nrf52840`: improve USBCDC
- `stm32`: use stm32-rs SVDs which are of much higher quality
- `stm32`: harmonization of UART logic
- `stm32`: replace I2C addressable interface with simpler type
- `stm32`: fix i2c and add stm32f407 i2c
- `stm32`: revert change that adds support for channels in interrupts
- `wasm`: implement a growable heap
- `wasm`: fix typo in wasm_exec.js, syscall/js.valueLoadString()
- `wasm`: Namespaced Wasm Imports so they don't conflict across modules, or reserved LLVM IR
- `wasi`: support env variables based on libc
- `wasi`: specify wasi-libc in a different way, to improve error message
* **boards**
- `matrixportal-m4`: add support for board Adafruit Matrix Portal M4
- `mkr1000`: add this board
- `nucleo-f722ze`: add this board
- `clue`: correct volume name and add alias for release version of Adafruit Clue board
- `p1am-100`: add support for the P1AM-100 (similar to Arduino MKR)
- `microbit-v2`: add initial support based on work done by @alankrantas thank you!
- `lgt92`: support for STM32L0 MCUs and Dragino LGT92 device
- `nicenano`: nice!nano board support
- `circuitplay-bluefruit`: correct internal I2C pin mapping
- `clue`: correct for lack of low frequency crystal
- `digispark`: split off attiny85 target
- `nucleo-l552ze`: implementation with CLOCK, LED, and UART
- `nrf52840-mdk-usb-dongle`: add this board
0.16.0
---
* **command-line**
- add initial support for LLVM 11
- make lib64 clang include path check more robust
- `build`: improve support for GOARCH=386 and add tests
- `gdb`: add support for qemu-user targets
- `test`: support non-host tests
- `test`: add support for -c and -o flags
- `test`: implement some benchmark stubs
* **compiler**
- `builder`: improve detection of clang on Fedora
- `compiler`: fix floating point comparison bugs
- `compiler`: implement negate for complex numbers
- `loader`: fix linkname in test binaries
- `transform`: add missing return pointer restore for regular coroutine tail
calls
* **standard library**
- `machine`: switch default frequency to 4MHz
- `machine`: clarify caller's responsibility in `SetInterrupt`
- `os`: add `LookupEnv()` stub
- `reflect`: implement `Swapper`
- `runtime`: fix UTF-8 decoding
- `runtime`: gc: use raw stack access whenever possible
- `runtime`: use dedicated printfloat32
- `runtime`: allow ranging over a nil map
- `runtime`: avoid device/nxp dependency in HardFault handler
- `testing`: implement dummy Helper method
- `testing`: add Run method
* **targets**
- `arm64`: add support for SVCall intrinsic
- `atsamd51`: avoid panic when configuring SPI with SDI=NoPin
- `avr`: properly support the `.rodata` section
- `esp8266`: implement `Pin.Get` function
- `nintendoswitch`: fix crash when printing long lines (> 120)
- `nintendoswitch`: add env parser and removed unused stuff
- `nrf`: add I2C error checking
- `nrf`: give more flexibility in picking SPI speeds
- `nrf`: fix nrf52832 flash size
- `stm32f103`: support wakeups from interrupts
- `stm32f405`: add SPI support
- `stm32f405`: add I2C support
- `wasi`: add support for this target
- `wasi`: use 'generic' ABI by default
- `wasi`: remove --no-threads flag from wasm-ld
- `wasm`: add instanceof support for WebAssembly
- `wasm`: use fixed length buffer for putchar
* **boards**
- `d1mini`: add this ESP8266 based board
- `esp32`: use board definitions instead of chip names
- `qtpy`: add board definition for Adafruit QTPy
- `teensy40`: add this board
0.15.0
---
* **command-line**
- add cached GOROOT to info subcommand
- embed git-hash in tinygo-dev executable
- implement tinygo targets to list usable targets
- use simpler file copy instead of file renaming to avoid issues on nrf52840 UF2 bootloaders
- use ToSlash() to specify program path
- support flashing esp32/esp8266 directly from tinygo
- when flashing call PortReset only on other than openocd
* **compiler**
- `compileopts`: add support for custom binary formats
- `compiler`: improve display of goroutine wrappers
- `interp`: don't panic in the Store method
- `interp`: replace some panics with error messages
- `interp`: show error line in first line of the traceback
- `loader`: be more robust when creating the cached GOROOT
- `loader`: rewrite/refactor much of the code to use go list directly
- `loader`: use ioutil.TempDir to create a temporary directory
- `stacksize`: deal with DW_CFA_advance_loc1
* **standard library**
- `runtime`: use waitForEvents when appropriate
* **wasm**
- `wasm`: Remove --no-threads from wasm-ld calls.
- `wasm`: update wasi-libc dependency
* **targets**
- `arduino-mega2560`: fix flashing on Windows
- `arm`: automatically determine stack sizes
- `arm64`: make dynamic loader structs and constants private
- `avr`: configure emulator in board files
- `cortexm`: fix stack size calculation with interrupts
- `flash`: add openocd settings to atsamd21 / atsamd51
- `flash`: add openocd settings to nrf5
- `microbit`: reelboard: flash using OpenOCD when needed
- `nintendoswitch`: Add dynamic loader for runtime loading PIE sections
- `nintendoswitch`: fix import cycle on dynamic_arm64.go
- `nintendoswitch`: Fix invalid memory read / write in print calls
- `nintendoswitch`: simplified assembly code
- `nintendoswitch`: support outputting .nro files directly
* **boards**
- `arduino-zero`: Adding support for the Arduino Zero (#1365)
- `atsamd2x`: fix BAUD value
- `atsamd5x`: fix BAUD value
- `bluepill`: Enable stm32's USART2 for the board and map it to UART1 tinygo's device
- `device/atsamd51x`: add all remaining bitfield values for PCHCTRLm Mapping
- `esp32`: add libgcc ROM functions to linker script
- `esp32`: add SPI support
- `esp32`: add support for basic GPIO
- `esp32`: add support for the Espressif ESP32 chip
- `esp32`: configure the I/O matrix for GPIO pins
- `esp32`: export machine.PortMask* for bitbanging implementations
- `esp8266`: add support for this chip
- `machine/atsamd51x,runtime/atsamd51x`: fixes needed for full support for all PWM pins. Also adds some useful constants to clarify peripheral clock usage
- `machine/itsybitsy-nrf52840`: add support for Adafruit Itsybitsy nrf52840 (#1243)
- `machine/stm32f4`: refactor common code and add new build tag stm32f4 (#1332)
- `nrf`: add SoftDevice support for the Circuit Playground Bluefruit
- `nrf`: call sd_app_evt_wait when the SoftDevice is enabled
- `nrf52840`: add build tags for SoftDevice support
- `nrf52840`: use higher priority for USB-CDC code
- `runtime/atsamd51x`: use PCHCTRL_GCLK_SERCOMX_SLOW for setting clocks on all SERCOM ports
- `stm32f405`: add basic UART handler
- `stm32f405`: add STM32F405 machine/runtime, and new board/target feather-stm32f405
* **build**
- `all`: run test binaries in the correct directory
- `build`: Fix arch release job
- `ci`: run `tinygo test` for known-working packages
- `ci`: set git-fetch-depth to 1
- `docker`: fix the problem with the wasm build (#1357)
- `Makefile`: check whether submodules have been downloaded in some common cases
* **docs**
- add ESP32, ESP8266, and Adafruit Feather STM32F405 to list of supported boards
0.14.1
---
* **command-line**
- support for Go 1.15
* **compiler**
- loader: work around Windows symlink limitation
0.14.0
---
* **command-line**
- fix `getDefaultPort()` on non-English Windows locales
- compileopts: improve error reporting of unsupported flags
- fix test subcommand
- use auto-retry to locate MSD for UF2 and HEX flashing
- fix touchSerialPortAt1200bps on Windows
- support package names with backslashes on Windows
* **compiler**
- fix a few crashes due to named types
- add support for atomic operations
- move the channel blocked list onto the stack
- fix -gc=none
- fix named string to `[]byte` slice conversion
- implement func value and builtin defers
- add proper parameter names to runtime.initAll, to fix a panic
- builder: fix picolibc include path
- builder: use newer version of gohex
- builder: try to determine stack size information at compile time
- builder: remove -opt=0
- interp: fix sync/atomic.Value load/store methods
- loader: add Go module support
- transform: fix debug information in func lowering pass
- transform: do not special-case zero or one implementations of a method call
- transform: introduce check for method calls on nil interfaces
- transform: gc: track 0-index GEPs to fix miscompilation
* **cgo**
- Add LDFlags support
* **standard library**
- extend stdlib to allow import of more packages
- replace master/slave terminology with appropriate alternatives (MOSI->SDO
etc)
- `internal/bytealg`: reimplement bytealg in pure Go
- `internal/task`: fix nil panic in (*internal/task.Stack).Pop
- `os`: add Args and stub it with mock data
- `os`: implement virtual filesystem support
- `reflect`: add Cap and Len support for map and chan
- `runtime`: fix return address in scheduler on RISC-V
- `runtime`: avoid recursion in printuint64 function
- `runtime`: replace ReadRegister with AsmFull inline assembly
- `runtime`: fix compilation errors when using gc.extalloc
- `runtime`: add cap and len support for chans
- `runtime`: refactor time handling (improving accuracy)
- `runtime`: make channels work in interrupts
- `runtime/interrupt`: add cross-chip disable/restore interrupt support
- `sync`: implement `sync.Cond`
- `sync`: add WaitGroup
* **targets**
- `arm`: allow nesting in DisableInterrupts and EnableInterrupts
- `arm`: make FPU configuration consistent
- `arm`: do not mask fault handlers in critical sections
- `atmega2560`: fix pin mapping for pins D2, D5 and the L port
- `atsamd`: return an error when an incorrect PWM pin is used
- `atsamd`: add support for pin change interrupts
- `atsamd`: add DAC support
- `atsamd21`: add more ADC pins
- `atsamd51`: fix ROM / RAM size on atsamd51j20
- `atsamd51`: add more pins
- `atsamd51`: add more ADC pins
- `atsamd51`: add pin change interrupt settings
- `atsamd51`: extend pinPadMapping
- `arduino-nano33`: use (U)SB flag to ensure that device can be found when
not on default port
- `arduino-nano33`: remove (d)ebug flag to reduce console noise when flashing
- `avr`: use standard pin numbering
- `avr`: unify GPIO pin/port code
- `avr`: add support for PinInputPullup
- `avr`: work around codegen bug in LLVM 10
- `avr`: fix target triple
- `fe310`: remove extra println left in by mistake
- `feather-nrf52840`: add support for the Feather nRF52840
- `maixbit`: add board definition and dummy runtime
- `nintendoswitch`: Add experimental Nintendo Switch support without CRT
- `nrf`: expose the RAM base address
- `nrf`: add support for pin change interrupts
- `nrf`: add microbit-s110v8 target
- `nrf`: fix bug in SPI.Tx
- `nrf`: support debugging the PCA10056
- `pygamer`: add Adafruit PyGamer support
- `riscv`: fix interrupt configuration bug
- `riscv`: disable linker relaxations during gp init
- `stm32f4disco`: add new target with ST-Link v2.1 debugger
- `teensy36`: add Teensy 3.6 support
- `wasm`: fix event handling
- `wasm`: add --no-demangle linker option
- `wioterminal`: add support for the Seeed Wio Terminal
- `xiao`: add support for the Seeed XIAO
0.13.1
---
* **standard library**
- `runtime`: do not put scheduler and GC code in the same section
- `runtime`: copy stack scan assembly for GBA
* **boards**
- `gameboy-advance`: always use ARM mode instead of Thumb mode
0.13.0
---
* **command line**
- use `gdb-multiarch` for debugging Cortex-M chips
- support `tinygo run` with simavr
- support LLVM 10
- support Go 1.14
- retry 3 times when attempting to do a 1200-baud reset
* **compiler**
- mark the `abort` function as noreturn
- fix deferred calls to exported functions
- add debug info for local variables
- check for channel size limit
- refactor coroutine lowering
- add `dereferenceable_or_null` attribute to pointer parameters
- do not perform nil checking when indexing slices and on `unsafe.Pointer`
- remove `runtime.isnil` hack
- use LLVM builtins for runtime `memcpy`/`memmove`/`memzero` functions
- implement spec-compliant shifts on negative/overflow
- support anonymous type asserts
- track pointer result of string concatenation for GC
- track PHI nodes for GC
- add debug info to goroutine start wrappers
- optimize comparing interface values against nil
- fix miscompilation when deferring an interface call
- builder: include picolibc for most baremetal targets
- builder: run tools (clang, lld) as separate processes
- builder: use `-fshort-enums` consistently
- interp: add support for constant type asserts
- interp: better support for interface operations
- interp: include backtrace with error
- transform: do not track const globals for GC
- transform: replace panics with source locations
- transform: fix error in interface lowering pass
- transform: make coroutine lowering deterministic
- transform: fix miscompilation in func lowering
* **cgo**
- make `-I` and `-L` paths absolute
* **standard library**
- `machine`: set the USB VID and PID to the manufacturer values
- `machine`: correct USB CDC composite descriptors
- `machine`: move `errors.New` calls to globals
- `runtime`: support operations on nil maps
- `runtime`: fix copy builtin return value on AVR
- `runtime`: refactor goroutines
- `runtime`: support `-scheduler=none` on most platforms
- `runtime`: run package initialization in the main goroutine
- `runtime`: export `malloc` / `free` for use from C
- `runtime`: add garbage collector that uses an external allocator
- `runtime`: scan callee-saved registers while marking the stack
- `runtime`: remove recursion from conservative GC
- `runtime`: fix blocking select on nil channel
- `runtime/volatile`: include `ReplaceBits` method
- `sync`: implement trivial `sync.Map`
* **targets**
- `arm`: use `-fomit-frame-pointer`
- `atmega1284`: support this chip for testing purposes
- `atsamd51`: make QSPI available on all boards
- `atsamd51`: add support for ADC1
- `atsamd51`: use new interrupt registration in UART code
- `attiny`: clean up pin definitions
- `avr`: use the correct RAM start address
- `avr`: pass the correct `-mmcu` flag to the linker
- `avr`: add support for tasks scheduler (disabled by default)
- `avr`: fix linker problem with overlapping program/data areas
- `nrf`: fix typo in pin configuration options
- `nrf`: add lib/nrfx/mdk to include dirs
- `nrf52840`: implement USB-CDC
- `riscv`: implement VirtIO target and add RISC-V integration test
- `riscv`: add I2C support for the HiFive1 rev B board
- `stm32`: refactor GPIO pin handling
- `stm32`: refactor UART code
- `stm32f4`: add SPI
- `wasm`: support Go 1.14 (breaking previous versions)
- `wasm`: support `syscall/js.CopyBytesToJS`
- `wasm`: sync polyfills from Go 1.14.
* **boards**
- `arduino-mega2560`: add the Arduino Mega 2560
- `clue-alpha`: add the Adafruit CLUE Alpha
- `gameboy-advance`: enable debugging with GDB
- `particle-argon`: add the Particle Argon board
- `particle-boron`: add the Particle Boron board
- `particle-xenon`: add the Particle Xenon board
- `reelboard`: add `reelboard-s140v7` SoftDevice target
0.12.0
---
* **command line**
- add initial FreeBSD support
- remove getting a serial port in gdb subcommand
- add support for debugging through JLinkGDBServer
- fix CGo when cross compiling
- remove default port check for Digispark as micronucleus communicates directly using HID
- differentiate between various serial/USB error messages
* **builder**
- improve detection of Clang headers
* **compiler**
- fix assertion on empty interface
- don't crash when encountering `types.Invalid`
- revise defer to use heap allocations when running a variable number of times
- improve error messages for failed imports
- improve "function redeclared" error
- add globaldce pass to start of optimization pipeline
- add support for debugging globals
- implement RISC-V CSR operations as intrinsics
- add support for CGO_ENABLED environment variable
- do not emit debug info for extern globals (bugfix)
- add support for interrupts
- implement maps for arbitrary keys
- interp: error location for "unknown GEP" error
- wasm-abi: create temporary allocas in the entry block
* **cgo**
- add support for symbols in `#define`
- fix a bug in number tokenization
* **standard library**
- `machine`: avoid bytes package in USB logic
- `runtime`: fix external address declarations
- `runtime`: provide implementation for `internal/bytealg.IndexByte`
* **targets**
- `atsamd51`: fix volatile usage
- `atsamd51`: fix ADC, updating to 12-bits precision
- `atsamd51`: refactor SPI pin configuration to only look at pin numbers
- `atsamd51`: switch UART to use new pin configuration
- `atsamd51`: fix obvious bug in I2C code
- `atsamd51`: use only the necessary UART interrupts
- `atsamd51`: refactor I2C pin handling to auto-detect pin mode
- `avr`: use a garbage collector
- `fe310`: use CLINT peripheral for timekeeping
- `fe310`: add support for PLIC interrupts
- `fe310`: implement UART receive interrupts
- `riscv`: support sleeping in QEMU
- `riscv`: add bare-bones interrupt support
- `riscv`: print exception PC and code
- `wasm`: implement memcpy and memset
- `wasm`: include wasi-libc
- `wasm`: use wasi ABI for basic startup/stdout
* **boards**
- `arduino`: make avrdude command line compatible with Windows
- `arduino-nano`: add this board
- `arduino-nano33`: fix UART1 and UART2
- `circuitplay-bluefruit`: add this board
- `digispark`: add clock speed and pin mappings
- `gameboy-advance`: include compiler-rt in build
- `gameboy-advance`: implement interrupt handler
- `hifive1b`: add support for gdb subcommand
- `pyportal`: add this board
- `pyportal`: remove manual SPI pin mapping as now handled by default
0.11.0
---
* **command line**
- add support for QEMU in `gdb` subcommand
- use builtin Clang when building statically, dropping the clang-9 dependency
- search for default serial port on both macOS and Linux
- windows: support `tinygo flash` directly by using win32 wmi
* **compiler**
- add location information to the IR checker
- make reflection sidetables constant globals
- improve error locations in goroutine lowering
- interp: improve support for maps with string keys
- interp: add runtime fallback for mapassign operations
* **standard library**
- `machine`: add support for `SPI.Tx()` on play.tinygo.org
- `machine`: rename `CPU_FREQUENCY` to `CPUFrequency()`
* **targets**
- `adafruit-pybadge`: add Adafruit Pybadge
- `arduino-nano33`: allow simulation on play.tinygo.org
- `arduino-nano33`: fix default SPI pin numbers to be D13/D11/D12
- `circuitplay-express`: allow simulation on play.tinygo.org
- `hifive1-qemu`: add target for testing RISC-V bare metal in QEMU
- `riscv`: fix heap corruption due to changes in LLVM 9
- `riscv`: add support for compiler-rt
- `qemu`: rename to `cortex-m-qemu`
0.10.0
---
* **command line**
- halt GDB after flashing with `gdb` subcommand
- fix a crash when using `-ocd-output`
- add `info` subcommand
- add `-programmer` flag
* **builder**
- macos: use llvm@8 instead of just llvm in paths
- add `linkerscript` key to target JSON files
- write a symbol table when writing out the compiler-rt lib
- make Clang header detection more robust
- switch to LLVM 9
* **compiler**
- fix interface miscompilation with reflect
- fix miscompile of static goroutine calls to closures
- fix `todo: store` panic
- fix incorrect starting value for optimized allocations in a loop
- optimize coroutines on non-Cortex-M targets
- fix crash for programs which have heap allocations but never hit the GC
- add support for async interface calls
- fix inserting non-const values in a const global
- interp: improve error reporting
- interp: implement comparing ptrtoint to 0
* **cgo**
- improve diagnostics
- implement the constant parser (for `#define`) as a real parser
- rename reserved field names such as `type`
- avoid `"unsafe" imported but not used` error
- include all enums in the CGo Go AST
- add support for nested structs and unions
- implement `#cgo CFLAGS`
* **standard library**
- `reflect`: add implementation of array alignment
- `runtime`: improve scheduler performance when no goroutines are queued
- `runtime`: add blocking select
- `runtime`: implement interface equality in non-trivial cases
- `runtime`: add AdjustTimeOffset to update current time
- `runtime`: only implement CountString for required platforms
- `runtime`: use MSP/PSP registers for scheduling on Cortex-M
* **targets**
- `arm`: add system timer registers
- `atmega`: add port C GPIO support
- `atsamd21`: correct handling of pins >= 32
- `atsamd21`: i2s initialization fixes
- `atsamd51`: fix clock init code
- `atsamd51`: correct initialization for RTC
- `atsamd51`: fix pin function selection
- `atsamd51`: pin method cleanup
- `atsamd51`: allow setting pin mode for each of the SPI pins
- `atsamd51`: correct channel init and pin map for ADC based on ItsyBitsy-M4
- `feather-m4`: add Adafruit Feather M4 board
- `hifive1b`: add support for SPI1
- `hifive1b`: fix compiling in simulation
- `linux`: fix time on arm32
- `metro-m4`: add support for Adafruit Metro M4 Express Airlift board
- `metro-m4`: fixes for UART2
- `pinetime-devkit0`: add support for the PineTime dev kit
- `x9pro`: add support for this smartwatch
- `pca10040-s132v6`: add support for SoftDevice
- `pca10056-s140v7`: add support for SoftDevice
- `arduino-nano33`: added SPI1 connected to NINA-W102 chip on Arduino Nano 33 IOT
0.9.0
---
* **command line**
- implement 1200-baud UART bootloader reset when flashing boards that support
it
- flash using mass-storage device for boards that support it
- implement `tinygo env`
- add support for Windows (but not yet producing Windows binaries)
- add Go version to `tinygo env`
- update SVD files for up-to-date peripheral interfaces
* **compiler**
- add `//go:align` pragma
- fix bug related to type aliases
- add support for buffered channels
- remove incorrect reflect optimization
- implement copying slices in init interpretation
- add support for constant indices with a named type
- add support for recursive types like linked lists
- fix miscompile of function nil panics
- fix bug related to goroutines
* **standard library**
- `machine`: do not check for nil slices in `SPI.Tx`
- `reflectlite`: add support for Go 1.13
- `runtime`: implement `internal/bytealg.CountString`
- `sync`: properly handle nil `New` func in `sync.Pool`
* **targets**
- `arduino`: fix .bss section initialization
- `fe310`: implement `Pin.Get`
- `gameboy-advance`: support directly outputting .gba files
- `samd`: reduce code size by avoiding reflection
- `samd21`: do not hardcode pin numbers for peripherals
- `stm32f103`: avoid issue with `time.Sleep` less than 200µs
0.8.0
---
* **command line**
- fix parsing of beta Go versions
- check the major/minor installed version of Go before compiling
- validate `-target` flag better to not panic on an invalid target
* **compiler**
- implement full slice expression: `s[:2:4]`
- fix a crash when storing a linked list in an interface
- fix comparing struct types by making type IDs more unique
- fix some bugs in IR generation
- add support for linked lists in reflect data
- implement `[]rune` to string conversion
- implement support for `go` on func values
* **standard library**
- `reflect`: add support for named types
- `reflect`: add support for `t.Bits()`
- `reflect`: add basic support for `t.AssignableTo()`
- `reflect`: implement `t.Align()`
- `reflect`: add support for struct types
- `reflect`: fix bug in `v.IsNil` and `v.Pointer` for addressable values
- `reflect`: implement support for array types
- `reflect`: implement `t.Comparable()`
- `runtime`: implement stack-based scheduler
- `runtime`: fix bug in the sleep queue of the scheduler
- `runtime`: implement `memcpy` for Cortex-M
- `testing`: implement stub `testing.B` struct
- `testing`: add common test logging methods such as Errorf/Fatalf/Printf
* **targets**
- `386`: add support for linux/386 syscalls
- `atsamd21`: make SPI pins configurable so that multiple SPI ports can be
used
- `atsamd21`: correct issue with invalid first reading coming from ADC
- `atsamd21`: add support for reset-to-bootloader using 1200baud over USB-CDC
- `atsamd21`: make pin selection more flexible for peripherals
- `atsamd21`: fix minimum delay in `time.Sleep`
- `atsamd51`: fix minimum delay in `time.Sleep`
- `nrf`: improve SPI write-only speed, by making use of double buffering
- `stm32f103`: fix SPI frequency selection
- `stm32f103`: add machine.Pin.Get method for reading GPIO values
- `stm32f103`: allow board specific UART usage
- `nucleo-f103rb`: add support for NUCLEO-F103RB board
- `itsybitsy-m4`: add support for this board with a SAMD51 family chip
- `cortex-m`: add support for `arm.SystemReset()`
- `gameboy-advance`: add initial support for the GameBoy Advance
- `wasm`: add `//go:wasm-module` magic comment to set the wasm module name
- `wasm`: add syscall/js.valueSetIndex support
- `wasm`: add syscall/js.valueInvoke support
0.7.1
---
* **targets**
- `atsamd21`: add support for the `-port` flag in the flash subcommand
0.7.0
---
* **command line**
- try more locations to find Clang built-in headers
- add support for `tinygo test`
- build current directory if no package is specified
- support custom .json target spec with `-target` flag
- use zversion.go to detect version of GOROOT version
- make initial heap size configurable for some targets (currently WebAssembly
only)
* **cgo**
- add support for bitfields using generated getters and setters
- add support for anonymous structs
* **compiler**
- show an error instead of panicking on duplicate function definitions
- allow packages like github.com/tinygo-org/tinygo/src/\* by aliasing it
- remove `//go:volatile` support
It has been replaced with the runtime/volatile package.
- allow pointers in map keys
- support non-constant syscall numbers
- implement non-blocking selects
- add support for the `-tags` flag
- add support for `string` to `[]rune` conversion
- implement a portable conservative garbage collector (with support for wasm)
- add the `//go:noinline` pragma
* **standard library**
- `os`: add `os.Exit` and `syscall.Exit`
- `os`: add several stubs
- `runtime`: fix heap corruption in conservative GC
- `runtime`: add support for math intrinsics where supported, massively
speeding up some benchmarks
- `testing`: add basic support for testing
* **targets**
- add support for a generic target that calls `__tinygo_*` functions for
peripheral access
- `arduino-nano33`: add support for this board
- `hifive1`: add support for this RISC-V board
- `reelboard`: add e-paper pins
- `reelboard`: add `PowerSupplyActive` to enable voltage for on-board devices
- `wasm`: put the stack at the start of linear memory, to detect stack
overflows
0.6.0
---
* **command line**
- some portability improvements
- make `$GOROOT` more robust and configurable
- check for Clang at the Homebrew install location as fallback
* **compiler driver**
- support multiple variations of LLVM commands, for non-Debian distributions
* **compiler**
- improve code quality in multiple ways
- make panic configurable, adding trap on panic
- refactor many internal parts of the compiler
- print all errors encountered during compilation
- implement calling function values of a named type
- implement returning values from blocking functions
- allow larger-than-int values to be sent across a channel
- implement complex arithmetic
- improve hashmap support
- add debuginfo for function arguments
- insert nil checks on stores (increasing code size)
- implement volatile operations as compiler builtins
- add `//go:inline` pragma
- add build tags for the Go stdlib version
* **cgo**
- implement `char`, `enum` and `void*` types
- support `#include` for builtin headers
- improve typedef/struct/enum support
- only include symbols that are necessary, for broader support
- mark external function args as `nocapture`
- implement support for some `#define` constants
- implement support for multiple CGo files in a single package
- **standard library**
- `machine`: remove microbit matrix (moved to drivers repository)
- `machine`: refactor pins to use `Pin` type instead of `GPIO`
- `runtime`: print more interface types on panic, including `error`
* **targets**
- `arm`: print an error on HardFault (including stack overflows)
- `atsamd21`: fix a bug in the ADC peripheral
- `atsamd21`: add support for I2S
- `feather-m0`: add support for this board
- `nrf51`: fix a bug in I2C
- `stm32f103xx`: fix a bug in I2C
- `syscall`: implement `Exit` on unix
- `trinket-m0`: add support for this board
- `wasm`: make _main_ example smaller
- `wasm`: don't cache wasm file in the server, for ease of debugging
- `wasm`: work around bug #41508 that caused a deadlock while linking
- `wasm`: add support for `js.FuncOf`
0.5.0
---
- **compiler driver**
- use `wasm-ld` instead of `wasm-ld-8` on macOS
- drop dependency on `llvm-ar`
- fix linker script includes when running outside `TINYGOROOT`
- **compiler**
- switch to LLVM 8
- add support for the Go 1.12 standard library (Go 1.11 is still supported)
- work around lack of escape analysis due to nil checks
- implement casting named structs and pointers to them
- fix int casting to use the source signedness
- fix some bugs around `make([]T, …)` with uncommon index types
- some other optimizations
- support interface asserts in interp for "math/rand" support
- resolve all func value targets at compile time (wasm-only at the moment)
- **cgo**
- improve diagnostics
- implement C `struct`, `union`, and arrays
- fix CGo-related crash in libclang
- implement `C.struct_` types
- **targets**
- all baremetal: pretend to be linux/arm instead of js/wasm
- `avr`: improve `uintptr` support
- `cortexm`: implement memmove intrinsic generated by LLVM
- `cortexm`: use the lld linker instead of `arm-none-eabi-ld`
- `darwin`: use custom syscall package that links to libSystem.dylib
- `microbit`: add blink example
- `samd21`: support I2C1
- `samd21`: machine/atsamd21: correct pad/pin handling when using both UART
and USBCDC interfaces at same time
- `stm32f4discovery`: add support for this board
- `wasm`: support async func values
- `wasm`: improve documentation and add extra example
0.4.1
---
- **compiler**
- fix `objcopy` replacement to include the .data section in the firmware image
- use `llvm-ar-7` on Linux to fix the Docker image
0.4.0
---
- **compiler**
- switch to the hardfloat ABI on ARM, which is more widely used
- avoid a dependency on `objcopy` (`arm-none-eabi-objcopy` etc.)
- fix a bug in `make([]T, n)` where `n` is 64-bits on a 32-bit platform
- adapt to a change in the AVR backend in LLVM 8
- directly support the .uf2 firmware format as used on Adafruit boards
- fix a bug when calling `panic()` at init time outside of the main package
- implement nil checks, which results in a ~5% increase in code size
- inline slice bounds checking, which results in a ~1% decrease in code size
- **targets**
- `samd21`: fix a bug in port B pins
- `samd21`: implement SPI peripheral
- `samd21`: implement ADC peripheral
- `stm32`: fix a bug in timekeeping
- `wasm`: fix a bug in `wasm_exec.js` that caused corruption in linear memory
when running on Node.js.
0.3.0
---
- **compiler**
- remove old `-initinterp` flag
- add support for macOS
- **cgo**
- add support for bool/float/complex types
- **standard library**
- `device/arm`: add support to disable/enable hardware interrupts
- `machine`: add CPU frequency for nrf-based boards
- `syscall`: add support for darwin/amd64
- **targets**
- `circuitplay_express`: add support for this board
- `microbit`: add regular pin constants
- `samd21`: fix time function for goroutine support
- `samd21`: add support for USB-CDC (serial over USB)
- `samd21`: add support for pins in port B
- `samd21`: add support for pullup and pulldown pins
- `wasm`: add support for Safari in example
0.2.0
---
- **command line**
- add version subcommand
- **compiler**
- fix a bug in floating point comparisons with NaN values
- fix a bug when calling `panic` in package initialization code
- add support for comparing `complex64` and `complex128`
- **cgo**
- add support for external globals
- add support for pointers and function pointers
- **standard library**
- `fmt`: initial support, `fmt.Println` works
- `math`: support for most/all functions
- `os`: initial support (only stdin/stdout/stderr)
- `reflect`: initial support
- `syscall`: add support for amd64, arm, and arm64
================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to make participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies within all project spaces, and it also applies when
an individual is representing the project or its community in public spaces.
Examples of representing a project or community include using an official
project e-mail address, posting via an official social media account, or acting
as an appointed representative at an online or offline event. Representation of
a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [conduct@tinygo.org](mailto:conduct@tinygo.org). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
================================================
FILE: CONTRIBUTING.md
================================================
Please take a look at our [Contributing](https://tinygo.org/docs/guides/contributing/) page on our web site for details. Thank you.
================================================
FILE: CONTRIBUTORS
================================================
# This is the official list of TinyGo authors for copyright purposes.
#
# This file is not actively maintained.
# To be included, send a change adding the individual or
# company who owns a contribution's copyright.
#
# Names should be added to this file as one of
# Organization's name
# Individual's name <submission email address>
# Individual's name <submission email address> <email2> <emailN>
#
# Please keep the list sorted.
Ayke van Laethem <aykevanlaethem@gmail.com>
Daniel Esteban <conejo@conejo.me>
Loon, LLC.
Ron Evans <ron@hybridgroup.com>
Nia Weiss <niaow1234@gmail.com>
================================================
FILE: Dockerfile
================================================
# tinygo-llvm stage obtains the llvm source for TinyGo
FROM golang:1.25 AS tinygo-llvm
RUN apt-get update && \
apt-get install -y apt-utils make cmake clang-17 ninja-build && \
rm -rf \
/var/lib/apt/lists/* \
/var/log/* \
/var/tmp/* \
/tmp/*
COPY ./GNUmakefile /tinygo/GNUmakefile
RUN cd /tinygo/ && \
make llvm-source
# tinygo-llvm-build stage build the custom llvm with xtensa support
FROM tinygo-llvm AS tinygo-llvm-build
RUN cd /tinygo/ && \
make llvm-build
# tinygo-compiler-build stage builds the compiler itself
FROM tinygo-llvm-build AS tinygo-compiler-build
COPY . /tinygo
# build the compiler and tools
RUN cd /tinygo/ && \
git submodule update --init && \
make gen-device -j4 && \
make build/release
# tinygo-compiler copies the compiler build over to a base Go container (without
# all the build tools etc).
FROM golang:1.25 AS tinygo-compiler
# Copy tinygo build.
COPY --from=tinygo-compiler-build /tinygo/build/release/tinygo /tinygo
# Configure the container.
ENV PATH="${PATH}:/tinygo/bin"
CMD ["tinygo"]
================================================
FILE: GNUmakefile
================================================
# aliases
all: tinygo
# Default build and source directories, as created by `make llvm-build`.
LLVM_BUILDDIR ?= llvm-build
LLVM_PROJECTDIR ?= llvm-project
CLANG_SRC ?= $(LLVM_PROJECTDIR)/clang
LLD_SRC ?= $(LLVM_PROJECTDIR)/lld
ifeq ($(OS),Windows_NT)
# avoid calling uname on Windows
uname := Windows_NT
else
uname := $(shell uname -s)
endif
# Try to autodetect LLVM build tools.
# Versions are listed here in descending priority order.
LLVM_VERSIONS = 19 18 17 16 15
errifempty = $(if $(1),$(1),$(error $(2)))
detect = $(shell which $(call errifempty,$(firstword $(foreach p,$(2),$(shell command -v $(p) 2> /dev/null && echo $(p)))),failed to locate $(1) at any of: $(2)))
toolSearchPathsVersion = $(1)-$(2)
ifeq ($(uname),Darwin)
# Also explicitly search Brew's copy, which is not in PATH by default.
BREW_PREFIX := $(shell brew --prefix)
toolSearchPathsVersion += $(BREW_PREFIX)/opt/llvm@$(2)/bin/$(1)-$(2) $(BREW_PREFIX)/opt/llvm@$(2)/bin/$(1)
endif
# First search for a custom built copy, then move on to explicitly version-tagged binaries, then just see if the tool is in path with its normal name.
findLLVMTool = $(call detect,$(1),$(abspath llvm-build/bin/$(1)) $(foreach ver,$(LLVM_VERSIONS),$(call toolSearchPathsVersion,$(1),$(ver))) $(1))
CLANG ?= $(call findLLVMTool,clang)
LLVM_AR ?= $(call findLLVMTool,llvm-ar)
LLVM_NM ?= $(call findLLVMTool,llvm-nm)
# Go binary and GOROOT to select
GO ?= go
# Flags to pass to go test.
GOTESTFLAGS ?=
GOTESTPKGS ?= ./builder ./cgo ./compileopts ./compiler ./interp ./transform .
# tinygo binary for tests
TINYGO ?= $(call detect,tinygo,tinygo $(CURDIR)/build/tinygo)
# Check for ccache if the user hasn't set it to on or off.
ifeq (, $(CCACHE))
LLVM_OPTION += '-DLLVM_CCACHE_BUILD=$(if $(shell command -v ccache 2> /dev/null),ON,OFF)'
else
LLVM_OPTION += '-DLLVM_CCACHE_BUILD=$(CCACHE)'
endif
# Allow enabling LLVM assertions
ifeq (1, $(ASSERT))
LLVM_OPTION += '-DLLVM_ENABLE_ASSERTIONS=ON'
else
LLVM_OPTION += '-DLLVM_ENABLE_ASSERTIONS=OFF'
endif
# Enable AddressSanitizer
ifeq (1, $(ASAN))
LLVM_OPTION += -DLLVM_USE_SANITIZER=Address
CGO_LDFLAGS += -fsanitize=address
endif
ifeq (1, $(STATIC))
# Build TinyGo as a fully statically linked binary (no dynamically loaded
# libraries such as a libc). This is not supported with glibc which is used
# on most major Linux distributions. However, it is supported in Alpine
# Linux with musl.
CGO_LDFLAGS += -static
# Also set the thread stack size to 1MB. This is necessary on musl as the
# default stack size is 128kB and LLVM uses more than that.
# For more information, see:
# https://wiki.musl-libc.org/functional-differences-from-glibc.html#Thread-stack-size
CGO_LDFLAGS += -Wl,-z,stack-size=1048576
# Build wasm-opt with static linking.
# For details, see:
# https://github.com/WebAssembly/binaryen/blob/version_102/.github/workflows/ci.yml#L181
BINARYEN_OPTION += -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static"
endif
# Optimize the binary size for Linux.
# These flags may work on other platforms, but have only been tested on Linux.
ifeq ($(uname),Linux)
HAS_MOLD := $(shell command -v ld.mold 2> /dev/null)
HAS_LLD := $(shell command -v ld.lld 2> /dev/null)
LLVM_CFLAGS := -ffunction-sections -fdata-sections -fvisibility=hidden
LLVM_LDFLAGS := -Wl,--gc-sections
ifneq ($(HAS_MOLD),)
# Mold might be slightly faster.
LLVM_LDFLAGS += -fuse-ld=mold -Wl,--icf=all
else ifneq ($(HAS_LLD),)
# LLD is more commonly available.
LLVM_LDFLAGS += -fuse-ld=lld -Wl,--icf=all
endif
LLVM_OPTION += \
-DCMAKE_C_FLAGS="$(LLVM_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$(LLVM_CFLAGS)"
CGO_LDFLAGS += $(LLVM_LDFLAGS)
endif
# Cross compiling support.
ifneq ($(CROSS),)
CC = $(CROSS)-gcc
CXX = $(CROSS)-g++
LLVM_OPTION += \
-DCMAKE_C_COMPILER=$(CC) \
-DCMAKE_CXX_COMPILER=$(CXX) \
-DLLVM_DEFAULT_TARGET_TRIPLE=$(CROSS) \
-DCROSS_TOOLCHAIN_FLAGS_NATIVE="-UCMAKE_C_COMPILER;-UCMAKE_CXX_COMPILER"
ifeq ($(CROSS), arm-linux-gnueabihf)
# Assume we're building on a Debian-like distro, with QEMU installed.
LLVM_CONFIG_PREFIX = qemu-arm -L /usr/arm-linux-gnueabihf/
# The CMAKE_SYSTEM_NAME flag triggers cross compilation mode.
LLVM_OPTION += \
-DCMAKE_SYSTEM_NAME=Linux \
-DLLVM_TARGET_ARCH=ARM
GOENVFLAGS = GOARCH=arm CC=$(CC) CXX=$(CXX) CGO_ENABLED=1
BINARYEN_OPTION += -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX)
else ifeq ($(CROSS), aarch64-linux-gnu)
# Assume we're building on a Debian-like distro, with QEMU installed.
LLVM_CONFIG_PREFIX = qemu-aarch64 -L /usr/aarch64-linux-gnu/
# The CMAKE_SYSTEM_NAME flag triggers cross compilation mode.
LLVM_OPTION += \
-DCMAKE_SYSTEM_NAME=Linux \
-DLLVM_TARGET_ARCH=AArch64
GOENVFLAGS = GOARCH=arm64 CC=$(CC) CXX=$(CXX) CGO_ENABLED=1
BINARYEN_OPTION += -DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX)
else
$(error Unknown cross compilation target: $(CROSS))
endif
endif
.PHONY: all tinygo test $(LLVM_BUILDDIR) llvm-source clean fmt gen-device gen-device-nrf gen-device-nxp gen-device-avr gen-device-rp
LLVM_COMPONENTS = all-targets analysis asmparser asmprinter bitreader bitwriter codegen core coroutines coverage debuginfodwarf debuginfopdb executionengine frontenddriver frontendhlsl frontendopenmp instrumentation interpreter ipo irreader libdriver linker lto mc mcjit objcarcopts option profiledata scalaropts support target windowsdriver windowsmanifest
ifeq ($(OS),Windows_NT)
EXE = .exe
START_GROUP = -Wl,--start-group
END_GROUP = -Wl,--end-group
# PIC needs to be disabled for libclang to work.
LLVM_OPTION += -DLLVM_ENABLE_PIC=OFF
CGO_CPPFLAGS += -DCINDEX_NO_EXPORTS
CGO_LDFLAGS += -static -static-libgcc -static-libstdc++
CGO_LDFLAGS_EXTRA += -lversion
USE_SYSTEM_BINARYEN ?= 1
else ifeq ($(uname),Darwin)
MD5SUM ?= md5
CGO_LDFLAGS += -lxar
USE_SYSTEM_BINARYEN ?= 1
else ifeq ($(uname),FreeBSD)
MD5SUM ?= md5
START_GROUP = -Wl,--start-group
END_GROUP = -Wl,--end-group
else
START_GROUP = -Wl,--start-group
END_GROUP = -Wl,--end-group
endif
# md5sum binary default, can be overridden by an environment variable
MD5SUM ?= md5sum
# Libraries that should be linked in for the statically linked Clang.
CLANG_LIB_NAMES = clangAnalysis clangAPINotes clangAST clangASTMatchers clangBasic clangCodeGen clangCrossTU clangDriver clangDynamicASTMatchers clangEdit clangExtractAPI clangFormat clangFrontend clangFrontendTool clangHandleCXX clangHandleLLVM clangIndex clangInstallAPI clangLex clangParse clangRewrite clangRewriteFrontend clangSema clangSerialization clangSupport clangTooling clangToolingASTDiff clangToolingCore clangToolingInclusions
CLANG_LIBS = $(START_GROUP) $(addprefix -l,$(CLANG_LIB_NAMES)) $(END_GROUP) -lstdc++
# Libraries that should be linked in for the statically linked LLD.
LLD_LIB_NAMES = lldCOFF lldCommon lldELF lldMachO lldMinGW lldWasm
LLD_LIBS = $(START_GROUP) $(addprefix -l,$(LLD_LIB_NAMES)) $(END_GROUP)
# Other libraries that are needed to link TinyGo.
EXTRA_LIB_NAMES = LLVMInterpreter LLVMMCA LLVMRISCVTargetMCA LLVMX86TargetMCA
# All libraries to be built and linked with the tinygo binary (lib/lib*.a).
LIB_NAMES = clang $(CLANG_LIB_NAMES) $(LLD_LIB_NAMES) $(EXTRA_LIB_NAMES)
# These build targets appear to be the only ones necessary to build all TinyGo
# dependencies. Only building a subset significantly speeds up rebuilding LLVM.
# The Makefile rules convert a name like lldELF to lib/liblldELF.a to match the
# library path (for ninja).
# This list also includes a few tools that are necessary as part of the full
# TinyGo build.
NINJA_BUILD_TARGETS = clang llvm-config llvm-ar llvm-nm lld $(addprefix lib/lib,$(addsuffix .a,$(LIB_NAMES)))
# For static linking.
ifneq ("$(wildcard $(LLVM_BUILDDIR)/bin/llvm-config*)","")
CGO_CPPFLAGS+=$(shell $(LLVM_CONFIG_PREFIX) $(LLVM_BUILDDIR)/bin/llvm-config --cppflags) -I$(abspath $(LLVM_BUILDDIR))/tools/clang/include -I$(abspath $(CLANG_SRC))/include -I$(abspath $(LLD_SRC))/include
CGO_CXXFLAGS=-std=c++17
CGO_LDFLAGS+=-L$(abspath $(LLVM_BUILDDIR)/lib) -lclang $(CLANG_LIBS) $(LLD_LIBS) $(shell $(LLVM_CONFIG_PREFIX) $(LLVM_BUILDDIR)/bin/llvm-config --ldflags --libs --system-libs $(LLVM_COMPONENTS)) -lstdc++ $(CGO_LDFLAGS_EXTRA)
endif
clean: ## Remove build directory
@rm -rf build
FMT_PATHS = ./*.go builder cgo/*.go compiler interp loader src transform
fmt: ## Reformat source
@gofmt -l -w $(FMT_PATHS)
fmt-check: ## Warn if any source needs reformatting
@unformatted=$$(gofmt -l $(FMT_PATHS)); [ -z "$$unformatted" ] && exit 0; echo "Unformatted:"; for fn in $$unformatted; do echo " $$fn"; done; exit 1
gen-device: gen-device-avr gen-device-esp gen-device-nrf gen-device-sam gen-device-sifive gen-device-kendryte gen-device-nxp gen-device-rp ## Generate microcontroller-specific sources
ifneq ($(RENESAS), 0)
gen-device: gen-device-renesas
endif
ifneq ($(STM32), 0)
gen-device: gen-device-stm32
endif
gen-device-avr:
@if [ ! -e lib/avr/README.md ]; then echo "Submodules have not been downloaded. Please download them using:\n git submodule update --init"; exit 1; fi
$(GO) build -o ./build/gen-device-avr ./tools/gen-device-avr/
./build/gen-device-avr lib/avr/packs/atmega src/device/avr/
./build/gen-device-avr lib/avr/packs/tiny src/device/avr/
@GO111MODULE=off $(GO) fmt ./src/device/avr
build/gen-device-svd: ./tools/gen-device-svd/*.go
$(GO) build -o $@ ./tools/gen-device-svd/
gen-device-esp: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/Espressif-Community -interrupts=software lib/cmsis-svd/data/Espressif-Community/ src/device/esp/
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/Espressif -interrupts=software lib/cmsis-svd/data/Espressif/ src/device/esp/
GO111MODULE=off $(GO) fmt ./src/device/esp
gen-device-nrf: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/NordicSemiconductor/nrfx/tree/master/mdk lib/nrfx/mdk/ src/device/nrf/
GO111MODULE=off $(GO) fmt ./src/device/nrf
gen-device-nxp: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/NXP lib/cmsis-svd/data/NXP/ src/device/nxp/
GO111MODULE=off $(GO) fmt ./src/device/nxp
gen-device-sam: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/Atmel lib/cmsis-svd/data/Atmel/ src/device/sam/
GO111MODULE=off $(GO) fmt ./src/device/sam
gen-device-sifive: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/SiFive-Community -interrupts=software lib/cmsis-svd/data/SiFive-Community/ src/device/sifive/
GO111MODULE=off $(GO) fmt ./src/device/sifive
gen-device-kendryte: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/Kendryte-Community -interrupts=software lib/cmsis-svd/data/Kendryte-Community/ src/device/kendryte/
GO111MODULE=off $(GO) fmt ./src/device/kendryte
gen-device-stm32: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/tinygo-org/stm32-svd lib/stm32-svd/svd src/device/stm32/
GO111MODULE=off $(GO) fmt ./src/device/stm32
gen-device-rp: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/posborne/cmsis-svd/tree/master/data/RaspberryPi lib/cmsis-svd/data/RaspberryPi/ src/device/rp/
GO111MODULE=off $(GO) fmt ./src/device/rp
gen-device-renesas: build/gen-device-svd
./build/gen-device-svd -source=https://github.com/cmsis-svd/cmsis-svd-data/tree/master/data/Renesas lib/cmsis-svd/data/Renesas/ src/device/renesas/
GO111MODULE=off $(GO) fmt ./src/device/renesas
$(LLVM_PROJECTDIR)/llvm:
git clone -b tinygo_20.x --depth=1 https://github.com/tinygo-org/llvm-project $(LLVM_PROJECTDIR)
llvm-source: $(LLVM_PROJECTDIR)/llvm ## Get LLVM sources
# Configure LLVM.
TINYGO_SOURCE_DIR=$(shell pwd)
$(LLVM_BUILDDIR)/build.ninja:
mkdir -p $(LLVM_BUILDDIR) && cd $(LLVM_BUILDDIR) && cmake -G Ninja $(TINYGO_SOURCE_DIR)/$(LLVM_PROJECTDIR)/llvm "-DLLVM_TARGETS_TO_BUILD=X86;ARM;AArch64;AVR;Mips;RISCV;WebAssembly" "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Xtensa" -DCMAKE_BUILD_TYPE=Release -DLIBCLANG_BUILD_STATIC=ON -DLLVM_ENABLE_TERMINFO=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_ENABLE_ZSTD=OFF -DLLVM_ENABLE_LIBEDIT=OFF -DLLVM_ENABLE_Z3_SOLVER=OFF -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TOOL_CLANG_TOOLS_EXTRA_BUILD=OFF -DCLANG_ENABLE_STATIC_ANALYZER=OFF -DCLANG_ENABLE_ARCMT=OFF $(LLVM_OPTION)
$(LLVM_BUILDDIR): $(LLVM_BUILDDIR)/build.ninja ## Build LLVM
cd $(LLVM_BUILDDIR) && ninja $(NINJA_BUILD_TARGETS)
ifneq ($(USE_SYSTEM_BINARYEN),1)
# Build Binaryen
.PHONY: binaryen
binaryen: build/wasm-opt$(EXE)
build/wasm-opt$(EXE):
mkdir -p build
cd lib/binaryen && cmake -G Ninja . -DBUILD_STATIC_LIB=ON -DBUILD_TESTS=OFF -DENABLE_WERROR=OFF $(BINARYEN_OPTION) && ninja bin/wasm-opt$(EXE)
cp lib/binaryen/bin/wasm-opt$(EXE) build/wasm-opt$(EXE)
endif
# Generate WASI syscall bindings
WASM_TOOLS_MODULE=go.bytecodealliance.org
.PHONY: wasi-syscall
wasi-syscall: wasi-cm
rm -rf ./src/internal/wasi/*
go run -modfile ./internal/wasm-tools/go.mod $(WASM_TOOLS_MODULE)/cmd/wit-bindgen-go generate --versioned -o ./src/internal -p internal --cm internal/cm ./lib/wasi-cli/wit
# Copy package cm into src/internal/cm
.PHONY: wasi-cm
wasi-cm:
rm -rf ./src/internal/cm/*
rsync -rv --delete --exclude go.mod --exclude '*_test.go' --exclude '*_json.go' --exclude '*.md' --exclude LICENSE $(shell go list -modfile ./internal/wasm-tools/go.mod -m -f {{.Dir}} $(WASM_TOOLS_MODULE)/cm)/ ./src/internal/cm
# Check for Node.js used during WASM tests.
MIN_NODEJS_VERSION=18
.PHONY: check-nodejs-version
check-nodejs-version:
@# Check whether NodeJS is available.
@if ! command -v node 2>&1 >/dev/null; then echo "Install NodeJS version ${MIN_NODEJS_VERSION}+ to run tests."; exit 1; fi
@# Check whether the version is high enough.
@if [ "`node -v | sed 's/v\([0-9]\+\).*/\\1/g'`" -lt $(MIN_NODEJS_VERSION) ]; then echo "Install NodeJS version $(MIN_NODEJS_VERSION)+ to run tests."; exit 1; fi
tinygo: ## Build the TinyGo compiler
@if [ ! -f "$(LLVM_BUILDDIR)/bin/llvm-config" ]; then echo "Fetch and build LLVM first by running:"; echo " $(MAKE) llvm-source"; echo " $(MAKE) $(LLVM_BUILDDIR)"; exit 1; fi
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GOENVFLAGS) $(GO) build -buildmode exe -o build/tinygo$(EXE) -tags "byollvm osusergo" .
test: check-nodejs-version
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags "byollvm osusergo" $(GOTESTPKGS)
# Standard library packages that pass tests on darwin, linux, wasi, and windows, but take over a minute in wasi
TEST_PACKAGES_SLOW = \
compress/bzip2 \
crypto/dsa \
index/suffixarray \
# Standard library packages that pass tests quickly on darwin, linux, wasi, and windows
TEST_PACKAGES_FAST = \
cmp \
compress/lzw \
compress/zlib \
container/heap \
container/list \
container/ring \
crypto/ecdsa \
crypto/elliptic \
crypto/md5 \
crypto/sha1 \
crypto/sha256 \
crypto/sha512 \
database/sql/driver \
debug/macho \
embed/internal/embedtest \
encoding \
encoding/ascii85 \
encoding/asn1 \
encoding/base32 \
encoding/base64 \
encoding/csv \
encoding/hex \
go/ast \
go/format \
go/scanner \
go/version \
hash \
hash/adler32 \
hash/crc64 \
hash/fnv \
html \
internal/itoa \
internal/profile \
math \
math/cmplx \
net/http/internal/ascii \
net/mail \
os \
path \
reflect \
sync \
testing \
testing/iotest \
text/scanner \
unicode \
unicode/utf16 \
unicode/utf8 \
unique \
$(nil)
# archive/zip requires os.ReadAt, which is not yet supported on windows
# bytes requires mmap
# compress/flate appears to hang on wasi
# crypto/aes fails on wasi, needs panic()/recover()
# crypto/des fails on wasi, needs panic()/recover()
# crypto/hmac fails on wasi, it exits with a "slice out of range" panic
# debug/plan9obj requires os.ReadAt, which is not yet supported on windows
# image requires recover(), which is not yet supported on wasi
# io/ioutil requires os.ReadDir, which is not yet supported on windows or wasi
# mime: fail on wasi; neds panic()/recover()
# mime/multipart: needs wasip1 syscall.FDFLAG_NONBLOCK
# mime/quotedprintable requires syscall.Faccessat
# net/mail: needs wasip1 syscall.FDFLAG_NONBLOCK
# net/ntextproto: needs wasip1 syscall.FDFLAG_NONBLOCK
# regexp/syntax: fails on wasip1; needs panic()/recover()
# strconv requires recover() which is not yet supported on wasi
# text/tabwriter requires recover(), which is not yet supported on wasi
# text/template/parse requires recover(), which is not yet supported on wasi
# testing/fstest requires os.ReadDir, which is not yet supported on windows or wasi
# Additional standard library packages that pass tests on individual platforms
TEST_PACKAGES_LINUX := \
archive/zip \
compress/flate \
crypto/aes \
crypto/des \
crypto/hmac \
debug/dwarf \
debug/plan9obj \
image \
io/ioutil \
mime \
mime/multipart \
mime/quotedprintable \
net \
net/mail \
net/textproto \
os/user \
regexp/syntax \
strconv \
text/tabwriter \
text/template/parse
TEST_PACKAGES_DARWIN := $(TEST_PACKAGES_LINUX)
# os/user requires t.Skip() support
TEST_PACKAGES_WINDOWS := \
compress/flate \
crypto/des \
crypto/hmac \
strconv \
text/template/parse \
$(nil)
# These packages cannot be tested on wasm, mostly because these tests assume a
# working filesystem. This could perhaps be fixed, by supporting filesystem
# access when running inside Node.js.
TEST_PACKAGES_WASM = $(filter-out $(TEST_PACKAGES_NONWASM), $(TEST_PACKAGES_FAST))
TEST_PACKAGES_NONWASM = \
compress/lzw \
compress/zlib \
crypto/ecdsa \
debug/macho \
embed/internal/embedtest \
go/format \
os \
testing \
$(nil)
# These packages cannot be tested on baremetal.
#
# Some reasons why the tests don't pass on baremetal:
#
# * No filesystem is available, so packages like compress/zlib can't be tested
# (just like wasm).
# * picolibc math functions apparently are less precise, the math package
# fails on baremetal.
TEST_PACKAGES_BAREMETAL = $(filter-out $(TEST_PACKAGES_NONBAREMETAL), $(TEST_PACKAGES_FAST))
TEST_PACKAGES_NONBAREMETAL = \
$(TEST_PACKAGES_NONWASM) \
math \
$(nil)
# Report platforms on which each standard library package is known to pass tests
report-stdlib-tests-pass:
$(eval jointmp := $(shell echo /tmp/join.$$$$))
@for t in $(TEST_PACKAGES_DARWIN); do echo "$$t darwin"; done | sort > $(jointmp).darwin
@for t in $(TEST_PACKAGES_LINUX); do echo "$$t linux"; done | sort > $(jointmp).linux
@for t in $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW); do echo "$$t darwin linux wasi windows"; done | sort > $(jointmp).portable
@join -a1 -a2 $(jointmp).darwin $(jointmp).linux | \
join -a1 -a2 - $(jointmp).portable
@rm $(jointmp).*
# Standard library packages that pass tests quickly on the current platform
ifeq ($(uname),Darwin)
TEST_PACKAGES_HOST := $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_DARWIN)
TEST_IOFS := true
endif
ifeq ($(uname),Linux)
TEST_PACKAGES_HOST := $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_LINUX)
TEST_IOFS := true
endif
ifeq ($(OS),Windows_NT)
TEST_PACKAGES_HOST := $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_WINDOWS)
TEST_IOFS := false
endif
TEST_SKIP_FLAG := -skip='TestExtraMethods|TestParseAndBytesRoundTrip/P256/Generic'
TEST_ADDITIONAL_FLAGS ?=
# Test known-working standard library packages.
# TODO: parallelize, and only show failing tests (no implied -v flag).
.PHONY: tinygo-test
tinygo-test:
@# TestExtraMethods: used by many crypto packages and uses reflect.Type.Method which is not implemented.
@# TestParseAndBytesRoundTrip/P256/Generic: relies on t.Skip() which is not implemented
$(TINYGO) test $(TEST_ADDITIONAL_FLAGS) $(TEST_SKIP_FLAG) $(TEST_PACKAGES_HOST) $(TEST_PACKAGES_SLOW)
@# io/fs requires os.ReadDir, not yet supported on windows or wasi. It also
@# requires a large stack-size. Hence, io/fs is only run conditionally.
@# For more details, see the comments on issue #3143.
ifeq ($(TEST_IOFS),true)
$(TINYGO) test -stack-size=6MB io/fs
endif
tinygo-test-fast:
$(TINYGO) test $(TEST_SKIP_FLAG) $(TEST_PACKAGES_HOST)
tinygo-bench:
$(TINYGO) test -bench . $(TEST_PACKAGES_HOST) $(TEST_PACKAGES_SLOW)
tinygo-bench-fast:
$(TINYGO) test -bench . $(TEST_PACKAGES_HOST)
# Same thing, except for wasi rather than the current platform.
tinygo-test-wasm:
$(TINYGO) test -target wasm $(TEST_SKIP_FLAG) $(TEST_PACKAGES_WASM)
tinygo-test-wasi:
$(TINYGO) test -target wasip1 $(TEST_SKIP_FLAG) $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW) ./tests/runtime_wasi
tinygo-test-wasip1:
GOOS=wasip1 GOARCH=wasm $(TINYGO) test $(TEST_SKIP_FLAG) $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW) ./tests/runtime_wasi
tinygo-test-wasip1-fast:
$(TINYGO) test -target=wasip1 $(TEST_SKIP_FLAG) $(TEST_PACKAGES_FAST) ./tests/runtime_wasi
tinygo-test-wasip2-slow:
$(TINYGO) test -target=wasip2 $(TEST_SKIP_FLAG) $(TEST_PACKAGES_SLOW)
tinygo-test-wasip2-fast:
$(TINYGO) test -target=wasip2 $(TEST_SKIP_FLAG) $(TEST_PACKAGES_FAST) ./tests/runtime_wasi
tinygo-test-wasip2-sum-slow:
TINYGO=$(TINYGO) \
TARGET=wasip2 \
TESTOPTS="-x -work" \
PACKAGES="$(TEST_PACKAGES_SLOW)" \
gotestsum --raw-command -- ./tools/tgtestjson.sh
tinygo-test-wasip2-sum-fast:
TINYGO=$(TINYGO) \
TARGET=wasip2 \
TESTOPTS="-x -work" \
PACKAGES="$(TEST_PACKAGES_FAST)" \
gotestsum --raw-command -- ./tools/tgtestjson.sh
tinygo-bench-wasip1:
$(TINYGO) test -target wasip1 -bench . $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW)
tinygo-bench-wasip1-fast:
$(TINYGO) test -target wasip1 -bench . $(TEST_PACKAGES_FAST)
tinygo-bench-wasip2:
$(TINYGO) test -target wasip2 -bench . $(TEST_PACKAGES_FAST) $(TEST_PACKAGES_SLOW)
tinygo-bench-wasip2-fast:
$(TINYGO) test -target wasip2 -bench . $(TEST_PACKAGES_FAST)
# Run tests on riscv-qemu since that one provides a large amount of memory.
tinygo-test-baremetal:
$(TINYGO) test -target riscv-qemu $(TEST_SKIP_FLAG) $(TEST_PACKAGES_BAREMETAL)
# Test external packages in a large corpus.
test-corpus:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml
test-corpus-fast:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus -short . -corpus=testdata/corpus.yaml
test-corpus-wasi:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml -target=wasip1
test-corpus-wasip2:
CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_CXXFLAGS="$(CGO_CXXFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)" $(GO) test $(GOTESTFLAGS) -timeout=1h -buildmode exe -tags byollvm -run TestCorpus . -corpus=testdata/corpus.yaml -target=wasip2
.PHONY: testchdir
testchdir:
# test 'build' command with{,out} -C argument
$(TINYGO) build -C tests/testing/chdir chdir.go && rm tests/testing/chdir/chdir
$(TINYGO) build ./tests/testing/chdir/chdir.go && rm chdir
# test 'run' command with{,out} -C argument
EXPECT_DIR=$(PWD)/tests/testing/chdir $(TINYGO) run -C tests/testing/chdir chdir.go
EXPECT_DIR=$(PWD) $(TINYGO) run ./tests/testing/chdir/chdir.go
.PHONY: smoketest
smoketest: testchdir
$(TINYGO) version
$(TINYGO) targets > /dev/null
# regression test for #2892
cd tests/testing/recurse && ($(TINYGO) test ./... > recurse.log && cat recurse.log && test $$(wc -l < recurse.log) = 2 && rm recurse.log)
# compile-only platform-independent examples
cd tests/text/template/smoke && $(TINYGO) test -c && rm -f smoke.test
# regression test for #2563
cd tests/os/smoke && $(TINYGO) test -c -target=pybadge && rm smoke.test
# test all examples (except pwm)
$(TINYGO) build -size short -o test.hex -target=pga2350 examples/echo
@$(MD5SUM) test.hex
$(TINYGO) build -size short -o test.hex -target=pca10040 examples/blinky1
@$(MD5SUM) test.hex
$(TINYGO) build -size short -o test.hex -target=pca10040 examples/adc
@$(MD5SUM) test.hex
$(TINYGO) build -size short -o test.hex -target=pca10040 examples/blinkm
@$(MD5SUM) test.hex
$(TINYGO) build -size sho
gitextract_7h6a1yup/ ├── .circleci/ │ └── config.yml ├── .dockerignore ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── build-macos.yml │ ├── docker.yml │ ├── linux.yml │ ├── llvm.yml │ ├── nix.yml │ ├── sizediff-install-pkgs.sh │ ├── sizediff.yml │ ├── tinygo-extract-version.sh │ └── windows.yml ├── .gitignore ├── .gitmodules ├── BUILDING.md ├── CHANGELOG.md ├── CODE-OF-CONDUCT.md ├── CONTRIBUTING.md ├── CONTRIBUTORS ├── Dockerfile ├── GNUmakefile ├── GOVERNANCE.md ├── LICENSE ├── README.md ├── bin/ │ └── .keep ├── builder/ │ ├── ar.go │ ├── bdwgc.go │ ├── build.go │ ├── builder_test.go │ ├── buildid.go │ ├── builtins.go │ ├── cc.go │ ├── cc1as.cpp │ ├── cc1as.h │ ├── cc_test.go │ ├── clang.cpp │ ├── commands.go │ ├── config.go │ ├── darwin-libsystem.go │ ├── elfpatch.go │ ├── error.go │ ├── esp.go │ ├── jobs.go │ ├── library.go │ ├── lld.cpp │ ├── mingw-w64.go │ ├── musl.go │ ├── nrfutil.go │ ├── objcopy.go │ ├── picolibc.go │ ├── size-report.go │ ├── size-report.html │ ├── sizes.go │ ├── sizes_test.go │ ├── tools-builtin.go │ ├── tools-external.go │ ├── tools.go │ ├── uf2.go │ ├── wasilibc.go │ └── wasmbuiltins.go ├── cgo/ │ ├── cgo.go │ ├── cgo_go122.go │ ├── cgo_test.go │ ├── const.go │ ├── const_test.go │ ├── libclang.go │ ├── libclang_config_llvm15.go │ ├── libclang_config_llvm16.go │ ├── libclang_config_llvm17.go │ ├── libclang_config_llvm18.go │ ├── libclang_config_llvm19.go │ ├── libclang_config_llvm20.go │ ├── libclang_stubs.c │ ├── security.go │ ├── security_test.go │ ├── sync.go │ └── testdata/ │ ├── basic.go │ ├── basic.out.go │ ├── const.go │ ├── const.out.go │ ├── errors.go │ ├── errors.out.go │ ├── flags.go │ ├── flags.out.go │ ├── include/ │ │ └── foo.h │ ├── symbols.go │ ├── symbols.out.go │ ├── types.go │ └── types.out.go ├── colorwriter.go ├── compileopts/ │ ├── config.go │ ├── options.go │ ├── options_test.go │ ├── target.go │ └── target_test.go ├── compiler/ │ ├── alias.go │ ├── asserts.go │ ├── atomic.go │ ├── calls.go │ ├── channel.go │ ├── compiler.go │ ├── compiler_test.go │ ├── defer.go │ ├── errors.go │ ├── func.go │ ├── gc.go │ ├── goroutine.go │ ├── inlineasm.go │ ├── interface.go │ ├── interrupt.go │ ├── intrinsics.go │ ├── ircheck/ │ │ ├── check.go │ │ └── errors.go │ ├── llvm.go │ ├── llvmutil/ │ │ └── llvm.go │ ├── map.go │ ├── sizes.go │ ├── symbol.go │ ├── syscall.go │ ├── testdata/ │ │ ├── basic.go │ │ ├── basic.ll │ │ ├── channel.go │ │ ├── channel.ll │ │ ├── defer-cortex-m-qemu.ll │ │ ├── defer.go │ │ ├── errors.go │ │ ├── float.go │ │ ├── float.ll │ │ ├── func.go │ │ ├── func.ll │ │ ├── gc.go │ │ ├── gc.ll │ │ ├── generics.go │ │ ├── generics.ll │ │ ├── go1.20.go │ │ ├── go1.20.ll │ │ ├── go1.21.go │ │ ├── go1.21.ll │ │ ├── goroutine-cortex-m-qemu-tasks.ll │ │ ├── goroutine-wasm-asyncify.ll │ │ ├── goroutine.go │ │ ├── interface.go │ │ ├── interface.ll │ │ ├── pointer.go │ │ ├── pointer.ll │ │ ├── pragma.go │ │ ├── pragma.ll │ │ ├── slice.go │ │ ├── slice.ll │ │ ├── string.go │ │ ├── string.ll │ │ ├── zeromap.go │ │ └── zeromap.ll │ └── volatile.go ├── corpus_test.go ├── diagnostics/ │ └── diagnostics.go ├── diff.go ├── docs/ │ ├── GNUmakefile │ ├── conf.py │ ├── index.rst │ ├── make.bat │ └── moved.rst ├── errors_test.go ├── flake.nix ├── go.mod ├── go.sum ├── goenv/ │ ├── goenv.go │ ├── tools-builtin.go │ ├── version.go │ └── version_test.go ├── hooks/ │ ├── README.md │ └── post_checkout ├── internal/ │ ├── tools/ │ │ ├── go.mod │ │ ├── go.sum │ │ └── tools.go │ └── wasm-tools/ │ ├── README.md │ ├── go.mod │ ├── go.sum │ └── tools.go ├── interp/ │ ├── README.md │ ├── compiler.go │ ├── errors.go │ ├── interp.go │ ├── interp_test.go │ ├── interpreter.go │ ├── memory.go │ └── testdata/ │ ├── alloc.ll │ ├── alloc.out.ll │ ├── basic.ll │ ├── basic.out.ll │ ├── consteval.ll │ ├── consteval.out.ll │ ├── interface.ll │ ├── interface.out.ll │ ├── phi.ll │ ├── phi.out.ll │ ├── revert.ll │ ├── revert.out.ll │ ├── slice-copy.ll │ └── slice-copy.out.ll ├── lib/ │ └── picolibc-stdio.c ├── loader/ │ ├── errors.go │ ├── goroot.go │ ├── list.go │ ├── loader.go │ ├── loader_go122.go │ └── ssa.go ├── main.go ├── main_test.go ├── misspell.csv ├── monitor.go ├── monitor_test.go ├── revive.toml ├── src/ │ ├── crypto/ │ │ ├── internal/ │ │ │ └── boring/ │ │ │ └── sig/ │ │ │ └── sig_other.go │ │ ├── rand/ │ │ │ ├── rand.go │ │ │ ├── rand_arc4random.go │ │ │ ├── rand_baremetal.go │ │ │ ├── rand_urandom.go │ │ │ ├── rand_windows.go │ │ │ └── util.go │ │ ├── tls/ │ │ │ ├── common.go │ │ │ ├── ticket.go │ │ │ └── tls.go │ │ └── x509/ │ │ └── internal/ │ │ └── macos/ │ │ └── macos.go │ ├── device/ │ │ ├── arm/ │ │ │ ├── arm.go │ │ │ ├── cortexm.S │ │ │ ├── interrupts.c │ │ │ ├── scb.go │ │ │ └── semihosting.go │ │ ├── arm64/ │ │ │ └── arm64.go │ │ ├── asm.go │ │ ├── esp/ │ │ │ ├── esp32.S │ │ │ ├── esp32c3.S │ │ │ └── esp8266.S │ │ ├── gba/ │ │ │ └── gba.go │ │ ├── nrf/ │ │ │ └── README.markdown │ │ ├── riscv/ │ │ │ ├── csr.go │ │ │ ├── handleinterrupt.S │ │ │ ├── riscv.go │ │ │ └── start.S │ │ └── tkey/ │ │ └── tkey.go │ ├── examples/ │ │ ├── adc/ │ │ │ └── adc.go │ │ ├── bench-goro/ │ │ │ └── bench.go │ │ ├── blinkm/ │ │ │ └── blinkm.go │ │ ├── blinky1/ │ │ │ └── blinky1.go │ │ ├── blinky2/ │ │ │ └── blinky2.go │ │ ├── button/ │ │ │ └── button.go │ │ ├── button2/ │ │ │ └── button2.go │ │ ├── can/ │ │ │ ├── feather-m4-can.go │ │ │ └── main.go │ │ ├── caninterrupt/ │ │ │ ├── feather-m4-can.go │ │ │ └── main.go │ │ ├── dac/ │ │ │ ├── circuitplay_express.go │ │ │ ├── dac.go │ │ │ └── pyportal.go │ │ ├── device-id/ │ │ │ └── main.go │ │ ├── echo/ │ │ │ └── echo.go │ │ ├── echo2/ │ │ │ └── echo2.go │ │ ├── empty/ │ │ │ └── main.go │ │ ├── flash/ │ │ │ └── main.go │ │ ├── gba-display/ │ │ │ └── gba-display.go │ │ ├── hello-wasm-unknown/ │ │ │ └── main.go │ │ ├── hid-joystick/ │ │ │ └── main.go │ │ ├── hid-keyboard/ │ │ │ └── main.go │ │ ├── hid-mouse/ │ │ │ └── main.go │ │ ├── i2c-target/ │ │ │ ├── main.go │ │ │ ├── main_feather_nrf52840.go │ │ │ └── main_feather_rp2040.go │ │ ├── i2s/ │ │ │ └── i2s.go │ │ ├── machinetest/ │ │ │ └── machinetest.go │ │ ├── mcp3008/ │ │ │ └── mcp3008.go │ │ ├── memstats/ │ │ │ └── memstats.go │ │ ├── microbit-blink/ │ │ │ └── microbit-blink.go │ │ ├── pdm/ │ │ │ └── pdm.go │ │ ├── pininterrupt/ │ │ │ ├── arduino.go │ │ │ ├── circuitplay-express.go │ │ │ ├── pca10040.go │ │ │ ├── pininterrupt.go │ │ │ ├── stm32.go │ │ │ └── wioterminal.go │ │ ├── pwm/ │ │ │ ├── arduino-mega1280.go │ │ │ ├── arduino.go │ │ │ ├── bluepill.go │ │ │ ├── feather-m4.go │ │ │ ├── itsybitsy-m0.go │ │ │ ├── itsybitsy-m4.go │ │ │ ├── nucleo-f722ze.go │ │ │ ├── nucleo-l031k6.go │ │ │ ├── nucleo-l432kc.go │ │ │ ├── nucleo-l552ze.go │ │ │ ├── pico.go │ │ │ ├── pwm.go │ │ │ └── stm32f4disco.go │ │ ├── ram-func/ │ │ │ └── main.go │ │ ├── rand/ │ │ │ └── main.go │ │ ├── rtcinterrupt/ │ │ │ └── rtcinterrupt.go │ │ ├── serial/ │ │ │ └── serial.go │ │ ├── systick/ │ │ │ ├── README.md │ │ │ └── systick.go │ │ ├── temp/ │ │ │ └── temp.go │ │ ├── time-offset/ │ │ │ └── time-offset.go │ │ ├── uart/ │ │ │ └── uart.go │ │ ├── usb-midi/ │ │ │ └── main.go │ │ ├── usb-storage/ │ │ │ └── main.go │ │ ├── wasm/ │ │ │ ├── .gitignore │ │ │ ├── GNUmakefile │ │ │ ├── README.md │ │ │ ├── callback/ │ │ │ │ ├── index.html │ │ │ │ ├── wasm.go │ │ │ │ └── wasm.js │ │ │ ├── export/ │ │ │ │ ├── index.html │ │ │ │ ├── wasm.go │ │ │ │ └── wasm.js │ │ │ ├── invoke/ │ │ │ │ ├── index.html │ │ │ │ ├── wasm.go │ │ │ │ └── wasm.js │ │ │ ├── main/ │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ └── main.go │ │ │ ├── server.go │ │ │ └── slices/ │ │ │ ├── index.html │ │ │ ├── wasm.go │ │ │ └── wasm.js │ │ └── watchdog/ │ │ └── main.go │ ├── internal/ │ │ ├── abi/ │ │ │ ├── abi.go │ │ │ ├── escape.go │ │ │ ├── funcpc.go │ │ │ └── type.go │ │ ├── binary/ │ │ │ └── binary.go │ │ ├── bytealg/ │ │ │ └── bytealg.go │ │ ├── cm/ │ │ │ ├── abi.go │ │ │ ├── case.go │ │ │ ├── docs.go │ │ │ ├── empty.s │ │ │ ├── error.go │ │ │ ├── error.wasm.go │ │ │ ├── future.go │ │ │ ├── hostlayout_go122.go │ │ │ ├── hostlayout_go123.go │ │ │ ├── list.go │ │ │ ├── option.go │ │ │ ├── resource.go │ │ │ ├── result.go │ │ │ ├── stream.go │ │ │ ├── tuple.go │ │ │ └── variant.go │ │ ├── futex/ │ │ │ ├── futex.go │ │ │ ├── futex_darwin.c │ │ │ └── futex_linux.c │ │ ├── fuzz/ │ │ │ └── fuzz.go │ │ ├── gclayout/ │ │ │ └── gclayout.go │ │ ├── reflectlite/ │ │ │ ├── deepequal.go │ │ │ ├── endian_big.go │ │ │ ├── endian_little.go │ │ │ ├── strconv.go │ │ │ ├── swapper.go │ │ │ ├── type.go │ │ │ ├── value.go │ │ │ └── visiblefields.go │ │ ├── syscall/ │ │ │ └── unix/ │ │ │ ├── constants.go │ │ │ ├── eaccess.go │ │ │ └── getrandom.go │ │ ├── task/ │ │ │ ├── atomic-cooperative.go │ │ │ ├── atomic-preemptive.go │ │ │ ├── darwin.go │ │ │ ├── futex-cooperative.go │ │ │ ├── futex-cores.go │ │ │ ├── futex-threads.go │ │ │ ├── gc_stack_chain.go │ │ │ ├── gc_stack_noop.go │ │ │ ├── linux.go │ │ │ ├── mutex-cooperative.go │ │ │ ├── mutex-preemptive.go │ │ │ ├── pmutex-cooperative.go │ │ │ ├── pmutex-preemptive.go │ │ │ ├── queue.go │ │ │ ├── semaphore.go │ │ │ ├── task.go │ │ │ ├── task_asyncify.go │ │ │ ├── task_asyncify_wasm.S │ │ │ ├── task_none.go │ │ │ ├── task_stack.go │ │ │ ├── task_stack_386.S │ │ │ ├── task_stack_386.go │ │ │ ├── task_stack_amd64.S │ │ │ ├── task_stack_amd64.go │ │ │ ├── task_stack_amd64_windows.S │ │ │ ├── task_stack_amd64_windows.go │ │ │ ├── task_stack_arm.S │ │ │ ├── task_stack_arm.go │ │ │ ├── task_stack_arm64.S │ │ │ ├── task_stack_arm64.go │ │ │ ├── task_stack_avr.S │ │ │ ├── task_stack_avr.go │ │ │ ├── task_stack_cortexm.S │ │ │ ├── task_stack_cortexm.c │ │ │ ├── task_stack_cortexm.go │ │ │ ├── task_stack_esp32.S │ │ │ ├── task_stack_esp32.go │ │ │ ├── task_stack_esp8266.S │ │ │ ├── task_stack_esp8266.go │ │ │ ├── task_stack_mipsx.S │ │ │ ├── task_stack_mipsx.go │ │ │ ├── task_stack_multicore.go │ │ │ ├── task_stack_tinygoriscv.S │ │ │ ├── task_stack_tinygoriscv.go │ │ │ ├── task_stack_unicore.go │ │ │ ├── task_threads.c │ │ │ └── task_threads.go │ │ └── wasi/ │ │ ├── cli/ │ │ │ └── v0.2.0/ │ │ │ ├── command/ │ │ │ │ └── command.wit.go │ │ │ ├── environment/ │ │ │ │ ├── empty.s │ │ │ │ ├── environment.wasm.go │ │ │ │ └── environment.wit.go │ │ │ ├── exit/ │ │ │ │ ├── empty.s │ │ │ │ ├── exit.wasm.go │ │ │ │ └── exit.wit.go │ │ │ ├── run/ │ │ │ │ ├── empty.s │ │ │ │ ├── run.exports.go │ │ │ │ ├── run.wasm.go │ │ │ │ └── run.wit.go │ │ │ ├── stderr/ │ │ │ │ ├── empty.s │ │ │ │ ├── stderr.wasm.go │ │ │ │ └── stderr.wit.go │ │ │ ├── stdin/ │ │ │ │ ├── empty.s │ │ │ │ ├── stdin.wasm.go │ │ │ │ └── stdin.wit.go │ │ │ ├── stdout/ │ │ │ │ ├── empty.s │ │ │ │ ├── stdout.wasm.go │ │ │ │ └── stdout.wit.go │ │ │ ├── terminal-input/ │ │ │ │ ├── empty.s │ │ │ │ ├── terminal-input.wasm.go │ │ │ │ └── terminal-input.wit.go │ │ │ ├── terminal-output/ │ │ │ │ ├── empty.s │ │ │ │ ├── terminal-output.wasm.go │ │ │ │ └── terminal-output.wit.go │ │ │ ├── terminal-stderr/ │ │ │ │ ├── empty.s │ │ │ │ ├── terminal-stderr.wasm.go │ │ │ │ └── terminal-stderr.wit.go │ │ │ ├── terminal-stdin/ │ │ │ │ ├── empty.s │ │ │ │ ├── terminal-stdin.wasm.go │ │ │ │ └── terminal-stdin.wit.go │ │ │ └── terminal-stdout/ │ │ │ ├── empty.s │ │ │ ├── terminal-stdout.wasm.go │ │ │ └── terminal-stdout.wit.go │ │ ├── clocks/ │ │ │ └── v0.2.0/ │ │ │ ├── monotonic-clock/ │ │ │ │ ├── empty.s │ │ │ │ ├── monotonic-clock.wasm.go │ │ │ │ └── monotonic-clock.wit.go │ │ │ └── wall-clock/ │ │ │ ├── empty.s │ │ │ ├── wall-clock.wasm.go │ │ │ └── wall-clock.wit.go │ │ ├── filesystem/ │ │ │ └── v0.2.0/ │ │ │ ├── preopens/ │ │ │ │ ├── empty.s │ │ │ │ ├── preopens.wasm.go │ │ │ │ └── preopens.wit.go │ │ │ └── types/ │ │ │ ├── abi.go │ │ │ ├── empty.s │ │ │ ├── types.wasm.go │ │ │ └── types.wit.go │ │ ├── io/ │ │ │ └── v0.2.0/ │ │ │ ├── error/ │ │ │ │ ├── empty.s │ │ │ │ ├── error.wasm.go │ │ │ │ └── error.wit.go │ │ │ ├── poll/ │ │ │ │ ├── empty.s │ │ │ │ ├── poll.wasm.go │ │ │ │ └── poll.wit.go │ │ │ └── streams/ │ │ │ ├── empty.s │ │ │ ├── streams.wasm.go │ │ │ └── streams.wit.go │ │ ├── random/ │ │ │ └── v0.2.0/ │ │ │ ├── insecure/ │ │ │ │ ├── empty.s │ │ │ │ ├── insecure.wasm.go │ │ │ │ └── insecure.wit.go │ │ │ ├── insecure-seed/ │ │ │ │ ├── empty.s │ │ │ │ ├── insecure-seed.wasm.go │ │ │ │ └── insecure-seed.wit.go │ │ │ └── random/ │ │ │ ├── empty.s │ │ │ ├── random.wasm.go │ │ │ └── random.wit.go │ │ └── sockets/ │ │ └── v0.2.0/ │ │ ├── instance-network/ │ │ │ ├── empty.s │ │ │ ├── instance-network.wasm.go │ │ │ └── instance-network.wit.go │ │ ├── ip-name-lookup/ │ │ │ ├── abi.go │ │ │ ├── empty.s │ │ │ ├── ip-name-lookup.wasm.go │ │ │ └── ip-name-lookup.wit.go │ │ ├── network/ │ │ │ ├── abi.go │ │ │ ├── empty.s │ │ │ ├── network.wasm.go │ │ │ └── network.wit.go │ │ ├── tcp/ │ │ │ ├── abi.go │ │ │ ├── empty.s │ │ │ ├── tcp.wasm.go │ │ │ └── tcp.wit.go │ │ ├── tcp-create-socket/ │ │ │ ├── empty.s │ │ │ ├── tcp-create-socket.wasm.go │ │ │ └── tcp-create-socket.wit.go │ │ ├── udp/ │ │ │ ├── abi.go │ │ │ ├── empty.s │ │ │ ├── udp.wasm.go │ │ │ └── udp.wit.go │ │ └── udp-create-socket/ │ │ ├── empty.s │ │ ├── udp-create-socket.wasm.go │ │ └── udp-create-socket.wit.go │ ├── machine/ │ │ ├── adc.go │ │ ├── board_adafruit-esp32-feather-v2.go │ │ ├── board_ae_rp2040.go │ │ ├── board_arduino.go │ │ ├── board_arduino_leonardo.go │ │ ├── board_arduino_mega1280.go │ │ ├── board_arduino_mega2560.go │ │ ├── board_arduino_mkr1000.go │ │ ├── board_arduino_mkrwifi1010.go │ │ ├── board_arduino_nano.go │ │ ├── board_arduino_nano33.go │ │ ├── board_arduino_zero.go │ │ ├── board_atmega328p.go │ │ ├── board_atmega328pb.go │ │ ├── board_atsamd21.go │ │ ├── board_atsame54-xpro.go │ │ ├── board_badger2040-w.go │ │ ├── board_badger2040.go │ │ ├── board_bluemicro840.go │ │ ├── board_bluepill.go │ │ ├── board_btt_skr_pico.go │ │ ├── board_challenger_rp2040.go │ │ ├── board_circuitplay_bluefruit.go │ │ ├── board_circuitplay_express.go │ │ ├── board_clue_alpha.go │ │ ├── board_digispark.go │ │ ├── board_elecrow-rp2040-w5.go │ │ ├── board_elecrow-rp2350-w5.go │ │ ├── board_esp-c3-32s-kit.go │ │ ├── board_esp32-c3-devkit-rust-1.go │ │ ├── board_esp32-coreboard-v2.go │ │ ├── board_esp32c3-12f.go │ │ ├── board_esp32c3-supermini.go │ │ ├── board_fe310.go │ │ ├── board_feather-m0-express.go │ │ ├── board_feather-m0.go │ │ ├── board_feather-m4-can.go │ │ ├── board_feather-m4.go │ │ ├── board_feather-nrf52840-sense.go │ │ ├── board_feather-nrf52840.go │ │ ├── board_feather-stm32f405.go │ │ ├── board_feather_rp2040.go │ │ ├── board_gemma-m0.go │ │ ├── board_gnse.go │ │ ├── board_gopher-arcade.go │ │ ├── board_gopher-badge.go │ │ ├── board_grandcentral-m4.go │ │ ├── board_hifive1b.go │ │ ├── board_hifive1b_baremetal.go │ │ ├── board_hw-651.go │ │ ├── board_itsybitsy-m0.go │ │ ├── board_itsybitsy-m4.go │ │ ├── board_itsybitsy-nrf52840.go │ │ ├── board_k210.go │ │ ├── board_kb2040.go │ │ ├── board_lgt92.go │ │ ├── board_lorae5.go │ │ ├── board_m5paper.go │ │ ├── board_m5stack.go │ │ ├── board_m5stack_core2.go │ │ ├── board_m5stamp_c3.go │ │ ├── board_m5stick_c.go │ │ ├── board_macropad-rp2040.go │ │ ├── board_maixbit.go │ │ ├── board_maixbit_baremetal.go │ │ ├── board_makerfabs-esp32c3spi35.go │ │ ├── board_matrixportal-m4.go │ │ ├── board_mch2022.go │ │ ├── board_mdbt50qrx.go │ │ ├── board_metro-m4-airlift.go │ │ ├── board_metro_rp2350.go │ │ ├── board_microbit-v2.go │ │ ├── board_microbit.go │ │ ├── board_mksnanov3.go │ │ ├── board_nano-33-ble.go │ │ ├── board_nano-rp2040.go │ │ ├── board_nicenano.go │ │ ├── board_nodemcu.go │ │ ├── board_nrf51.go │ │ ├── board_nrf52840-mdk-usb-dongle.go │ │ ├── board_nrf52840-mdk.go │ │ ├── board_nrf52840.go │ │ ├── board_nrf52840_generic.go │ │ ├── board_nucleof103rb.go │ │ ├── board_nucleof722ze.go │ │ ├── board_nucleol031k6.go │ │ ├── board_nucleol432kc.go │ │ ├── board_nucleol476rg.go │ │ ├── board_nucleol552ze.go │ │ ├── board_nucleowl55jc.go │ │ ├── board_p1am-100.go │ │ ├── board_particle_argon.go │ │ ├── board_particle_boron.go │ │ ├── board_particle_xenon.go │ │ ├── board_pca10031.go │ │ ├── board_pca10040.go │ │ ├── board_pca10056.go │ │ ├── board_pca10059.go │ │ ├── board_pga2350.go │ │ ├── board_pico.go │ │ ├── board_pico2.go │ │ ├── board_pico2_ice.go │ │ ├── board_pico_plus2.go │ │ ├── board_pinetime.go │ │ ├── board_pybadge.go │ │ ├── board_pygamer.go │ │ ├── board_pyportal.go │ │ ├── board_qtpy.go │ │ ├── board_qtpy_esp32c3.go │ │ ├── board_qtpy_rp2040.go │ │ ├── board_rak4631.go │ │ ├── board_reelboard.go │ │ ├── board_stm32f469disco.go │ │ ├── board_stm32f4disco.go │ │ ├── board_stm32l0x1.go │ │ ├── board_swan.go │ │ ├── board_teensy36.go │ │ ├── board_teensy40.go │ │ ├── board_teensy41.go │ │ ├── board_thingplus_rp2040.go │ │ ├── board_thumby.go │ │ ├── board_tiny2350.go │ │ ├── board_trinket.go │ │ ├── board_trinkey_qt2040.go │ │ ├── board_tufty2040.go │ │ ├── board_waveshare-rp2040-zero.go │ │ ├── board_waveshare_rp2040_tiny.go │ │ ├── board_wioterminal.go │ │ ├── board_x9pro.go │ │ ├── board_xiao-ble.go │ │ ├── board_xiao-esp32c3.go │ │ ├── board_xiao-esp32s3.go │ │ ├── board_xiao-rp2040.go │ │ ├── board_xiao.go │ │ ├── buffer.go │ │ ├── buffer_atmega.go │ │ ├── buffer_generic.go │ │ ├── deviceid.go │ │ ├── flash.go │ │ ├── i2c.go │ │ ├── i2s.go │ │ ├── machine.go │ │ ├── machine_atmega.go │ │ ├── machine_atmega1280.go │ │ ├── machine_atmega1284p.go │ │ ├── machine_atmega2560.go │ │ ├── machine_atmega328.go │ │ ├── machine_atmega328p.go │ │ ├── machine_atmega328p_simulator.go │ │ ├── machine_atmega328pb.go │ │ ├── machine_atmega32u4.go │ │ ├── machine_atsam.go │ │ ├── machine_atsamd21.go │ │ ├── machine_atsamd21_simulator.go │ │ ├── machine_atsamd21_usb.go │ │ ├── machine_atsamd21e18.go │ │ ├── machine_atsamd21g18.go │ │ ├── machine_atsamd51.go │ │ ├── machine_atsamd51_usb.go │ │ ├── machine_atsamd51g19.go │ │ ├── machine_atsamd51j19.go │ │ ├── machine_atsamd51j20.go │ │ ├── machine_atsamd51p19.go │ │ ├── machine_atsamd51p20.go │ │ ├── machine_atsame51j19.go │ │ ├── machine_atsame54p20.go │ │ ├── machine_atsame5x_can.go │ │ ├── machine_attiny1616.go │ │ ├── machine_attiny85.go │ │ ├── machine_avr.go │ │ ├── machine_avrtiny.go │ │ ├── machine_cortexm.go │ │ ├── machine_esp32.go │ │ ├── machine_esp32_i2c.go │ │ ├── machine_esp32c3.go │ │ ├── machine_esp32c3_i2c.go │ │ ├── machine_esp32c3_spi.go │ │ ├── machine_esp32s3.go │ │ ├── machine_esp8266.go │ │ ├── machine_fe310.go │ │ ├── machine_fe310_simulator.go │ │ ├── machine_gameboyadvance.go │ │ ├── machine_generic.go │ │ ├── machine_generic_peripherals.go │ │ ├── machine_k210.go │ │ ├── machine_mimxrt1062.go │ │ ├── machine_mimxrt1062_i2c.go │ │ ├── machine_mimxrt1062_spi.go │ │ ├── machine_mimxrt1062_uart.go │ │ ├── machine_nrf.go │ │ ├── machine_nrf51.go │ │ ├── machine_nrf51_simulator.go │ │ ├── machine_nrf52.go │ │ ├── machine_nrf52833.go │ │ ├── machine_nrf52840.go │ │ ├── machine_nrf52840_enter_bootloader.go │ │ ├── machine_nrf52840_lfxtal_false.go │ │ ├── machine_nrf52840_lfxtal_true.go │ │ ├── machine_nrf52840_simulator.go │ │ ├── machine_nrf52840_usb.go │ │ ├── machine_nrf52840_usb_reset_bossa.go │ │ ├── machine_nrf52840_usb_reset_none.go │ │ ├── machine_nrf52840_usb_reset_uf2.go │ │ ├── machine_nrf528xx.go │ │ ├── machine_nrf52xxx.go │ │ ├── machine_nrf5x.go │ │ ├── machine_nrf_bare.go │ │ ├── machine_nrf_sd.go │ │ ├── machine_nxpmk66f18.go │ │ ├── machine_nxpmk66f18_uart.go │ │ ├── machine_rp2.go │ │ ├── machine_rp2040_rom.go │ │ ├── machine_rp2040_rtc.go │ │ ├── machine_rp2040_simulator.go │ │ ├── machine_rp2040_usb.go │ │ ├── machine_rp2040_usb_fix_usb_device_enumeration.go │ │ ├── machine_rp2350_rom.go │ │ ├── machine_rp2350_usb.go │ │ ├── machine_rp2_2040.go │ │ ├── machine_rp2_2350.go │ │ ├── machine_rp2_2350a.go │ │ ├── machine_rp2_2350b.go │ │ ├── machine_rp2_adc.go │ │ ├── machine_rp2_clocks.go │ │ ├── machine_rp2_flash.go │ │ ├── machine_rp2_gpio.go │ │ ├── machine_rp2_i2c.go │ │ ├── machine_rp2_pins.go │ │ ├── machine_rp2_pll.go │ │ ├── machine_rp2_pwm.go │ │ ├── machine_rp2_resets.go │ │ ├── machine_rp2_rng.go │ │ ├── machine_rp2_spi.go │ │ ├── machine_rp2_sync.go │ │ ├── machine_rp2_timer.go │ │ ├── machine_rp2_uart.go │ │ ├── machine_rp2_usb.go │ │ ├── machine_rp2_watchdog.go │ │ ├── machine_rp2_xosc.go │ │ ├── machine_stm32.go │ │ ├── machine_stm32_adc_f1.go │ │ ├── machine_stm32_adc_f4.go │ │ ├── machine_stm32_exti_afio.go │ │ ├── machine_stm32_exti_exti.go │ │ ├── machine_stm32_exti_syscfg.go │ │ ├── machine_stm32_exti_syscfg_noenable.go │ │ ├── machine_stm32_flash.go │ │ ├── machine_stm32_gpio_reva.go │ │ ├── machine_stm32_gpio_revb.go │ │ ├── machine_stm32_gpio_revb_mp.go │ │ ├── machine_stm32_i2c_reva.go │ │ ├── machine_stm32_i2c_revb.go │ │ ├── machine_stm32_iwdg.go │ │ ├── machine_stm32_moder_gpio.go │ │ ├── machine_stm32_rng.go │ │ ├── machine_stm32_spi.go │ │ ├── machine_stm32_tim.go │ │ ├── machine_stm32_tim_moder.go │ │ ├── machine_stm32_uart.go │ │ ├── machine_stm32f103.go │ │ ├── machine_stm32f4.go │ │ ├── machine_stm32f40x.go │ │ ├── machine_stm32f469.go │ │ ├── machine_stm32f7.go │ │ ├── machine_stm32f7x2.go │ │ ├── machine_stm32l0.go │ │ ├── machine_stm32l0x1.go │ │ ├── machine_stm32l0x2.go │ │ ├── machine_stm32l4.go │ │ ├── machine_stm32l4x2.go │ │ ├── machine_stm32l4x5.go │ │ ├── machine_stm32l4x6.go │ │ ├── machine_stm32l5.go │ │ ├── machine_stm32l5x2.go │ │ ├── machine_stm32wlx.go │ │ ├── machine_tkey.go │ │ ├── machine_tkey_rom.go │ │ ├── pdm.go │ │ ├── pwm.go │ │ ├── runtime.go │ │ ├── serial-none.go │ │ ├── serial-rtt.go │ │ ├── serial-uart.go │ │ ├── serial-usb.go │ │ ├── serial.go │ │ ├── spi.go │ │ ├── spi_tx.go │ │ ├── uart.go │ │ ├── usb/ │ │ │ ├── adc/ │ │ │ │ ├── doc.go │ │ │ │ └── midi/ │ │ │ │ ├── buffer.go │ │ │ │ ├── messages.go │ │ │ │ ├── midi.go │ │ │ │ └── notes.go │ │ │ ├── cdc/ │ │ │ │ ├── buffer.go │ │ │ │ ├── cdc.go │ │ │ │ ├── doc.go │ │ │ │ └── usbcdc.go │ │ │ ├── config.go │ │ │ ├── descriptor/ │ │ │ │ ├── cdc.go │ │ │ │ ├── classspecific.go │ │ │ │ ├── configuration.go │ │ │ │ ├── descriptor.go │ │ │ │ ├── device.go │ │ │ │ ├── doc.go │ │ │ │ ├── endpoint.go │ │ │ │ ├── hid.go │ │ │ │ ├── hidreport.go │ │ │ │ ├── interface.go │ │ │ │ ├── interfaceassociation.go │ │ │ │ ├── joystick.go │ │ │ │ ├── midi.go │ │ │ │ └── msc.go │ │ │ ├── doc.go │ │ │ ├── hid/ │ │ │ │ ├── buffer.go │ │ │ │ ├── doc.go │ │ │ │ ├── hid.go │ │ │ │ ├── joystick/ │ │ │ │ │ ├── joystick.go │ │ │ │ │ └── state.go │ │ │ │ ├── keyboard/ │ │ │ │ │ ├── keyboard.go │ │ │ │ │ └── keycode.go │ │ │ │ └── mouse/ │ │ │ │ └── mouse.go │ │ │ ├── msc/ │ │ │ │ ├── cbw.go │ │ │ │ ├── csw/ │ │ │ │ │ └── csw.go │ │ │ │ ├── disk.go │ │ │ │ ├── msc.go │ │ │ │ ├── scsi/ │ │ │ │ │ └── scsi.go │ │ │ │ ├── scsi.go │ │ │ │ ├── scsi_inquiry.go │ │ │ │ ├── scsi_readwrite.go │ │ │ │ ├── scsi_unmap.go │ │ │ │ └── setup.go │ │ │ └── usb.go │ │ ├── usb.go │ │ ├── virt.go │ │ └── watchdog.go │ ├── os/ │ │ ├── deadline_test.go │ │ ├── dir.go │ │ ├── dir_darwin.go │ │ ├── dir_other.go │ │ ├── dir_test.go │ │ ├── dir_unix.go │ │ ├── dir_wasi.go │ │ ├── dirent_linux.go │ │ ├── endian_little.go │ │ ├── env.go │ │ ├── env_test.go │ │ ├── env_unix_test.go │ │ ├── errors.go │ │ ├── exec/ │ │ │ └── exec.go │ │ ├── exec.go │ │ ├── exec_linux.go │ │ ├── exec_linux_test.go │ │ ├── exec_other.go │ │ ├── exec_test.go │ │ ├── executable_darwin.go │ │ ├── executable_other.go │ │ ├── executable_procfs.go │ │ ├── export_test.go │ │ ├── export_windows_test.go │ │ ├── file.go │ │ ├── file_anyos.go │ │ ├── file_anyos_test.go │ │ ├── file_darwin.go │ │ ├── file_notdarwin.go │ │ ├── file_other.go │ │ ├── file_posix.go │ │ ├── file_unix.go │ │ ├── file_windows.go │ │ ├── filesystem.go │ │ ├── getpagesize_test.go │ │ ├── os_anyos_test.go │ │ ├── os_chmod_test.go │ │ ├── os_hardlink_test.go │ │ ├── os_symlink_test.go │ │ ├── os_test.go │ │ ├── osexec.go │ │ ├── path.go │ │ ├── path_test.go │ │ ├── path_unix.go │ │ ├── path_windows.go │ │ ├── path_windows_test.go │ │ ├── pipe_test.go │ │ ├── proc.go │ │ ├── read_test.go │ │ ├── removeall_noat.go │ │ ├── removeall_other.go │ │ ├── removeall_test.go │ │ ├── seek_unix_bad.go │ │ ├── stat.go │ │ ├── stat_darwin.go │ │ ├── stat_linuxlike.go │ │ ├── stat_other.go │ │ ├── stat_test.go │ │ ├── stat_unix.go │ │ ├── stat_windows.go │ │ ├── sys.go │ │ ├── tempfile.go │ │ ├── tempfile_test.go │ │ ├── truncate_test.go │ │ ├── types.go │ │ ├── types_anyos.go │ │ ├── types_unix.go │ │ └── types_windows.go │ ├── reflect/ │ │ ├── all_test.go │ │ ├── benchmark_test.go │ │ ├── convert_test.go │ │ ├── deepequal.go │ │ ├── export_test.go │ │ ├── internal/ │ │ │ ├── example1/ │ │ │ │ └── example.go │ │ │ └── example2/ │ │ │ └── example.go │ │ ├── intw.go │ │ ├── intw_avr.go │ │ ├── intw_test.go │ │ ├── iter.go │ │ ├── iter_test.go │ │ ├── makefunc.go │ │ ├── swapper.go │ │ ├── tostring_test.go │ │ ├── type.go │ │ ├── type_test.go │ │ ├── value.go │ │ ├── value_test.go │ │ ├── visiblefields.go │ │ └── visiblefields_test.go │ ├── runtime/ │ │ ├── algorithm.go │ │ ├── arch-has-returnaddr.go │ │ ├── arch-no-returnaddr.go │ │ ├── arch_386.go │ │ ├── arch_amd64.go │ │ ├── arch_arm.go │ │ ├── arch_arm64.go │ │ ├── arch_avr.go │ │ ├── arch_cortexm.go │ │ ├── arch_mips.go │ │ ├── arch_mipsle.go │ │ ├── arch_tinygoriscv.go │ │ ├── arch_tinygoriscv32.go │ │ ├── arch_tinygoriscv64.go │ │ ├── arch_tinygowasm.go │ │ ├── arch_tinygowasm_malloc.go │ │ ├── arch_xtensa.go │ │ ├── asm_386.S │ │ ├── asm_amd64.S │ │ ├── asm_amd64_windows.S │ │ ├── asm_arm.S │ │ ├── asm_arm64.S │ │ ├── asm_avr.S │ │ ├── asm_mipsx.S │ │ ├── asm_riscv.S │ │ ├── asm_tinygowasm.S │ │ ├── atomics_critical.go │ │ ├── baremetal.go │ │ ├── build_asserts.go │ │ ├── build_noasserts.go │ │ ├── cgo/ │ │ │ └── cgo.go │ │ ├── chan.go │ │ ├── complex.go │ │ ├── coro.go │ │ ├── debug/ │ │ │ ├── debug.go │ │ │ └── garbage.go │ │ ├── debug.go │ │ ├── defer.go │ │ ├── dynamic_arm64.go │ │ ├── env.go │ │ ├── env_unix.go │ │ ├── env_windows.go │ │ ├── error.go │ │ ├── extern.go │ │ ├── float.go │ │ ├── gc_blocks.go │ │ ├── gc_boehm.c │ │ ├── gc_boehm.go │ │ ├── gc_conservative.go │ │ ├── gc_custom.go │ │ ├── gc_globals.go │ │ ├── gc_leaking.go │ │ ├── gc_none.go │ │ ├── gc_precise.go │ │ ├── gc_stack_cores.go │ │ ├── gc_stack_portable.go │ │ ├── gc_stack_raw.go │ │ ├── gc_stack_threads.go │ │ ├── hashmap.go │ │ ├── hosted.go │ │ ├── interface.go │ │ ├── internal/ │ │ │ └── sys/ │ │ │ └── zversion.go │ │ ├── interrupt/ │ │ │ ├── checkpoint.go │ │ │ ├── interrupt.go │ │ │ ├── interrupt_avr.go │ │ │ ├── interrupt_cortexm.go │ │ │ ├── interrupt_esp32c3.go │ │ │ ├── interrupt_gameboyadvance.go │ │ │ ├── interrupt_k210.go │ │ │ ├── interrupt_none.go │ │ │ ├── interrupt_sifive.go │ │ │ ├── interrupt_tinygoriscv.go │ │ │ └── interrupt_xtensa.go │ │ ├── memhash_fnv.go │ │ ├── memhash_leveldb.go │ │ ├── memhash_tsip.go │ │ ├── metrics/ │ │ │ └── metrics.go │ │ ├── metrics.go │ │ ├── mstats.go │ │ ├── nonhosted.go │ │ ├── os_darwin.c │ │ ├── os_darwin.go │ │ ├── os_js.go │ │ ├── os_linux.go │ │ ├── os_other.go │ │ ├── os_wasip1.go │ │ ├── os_wasip2.go │ │ ├── os_windows.go │ │ ├── panic.go │ │ ├── poll.go │ │ ├── pprof/ │ │ │ └── pprof.go │ │ ├── print.go │ │ ├── proc.go │ │ ├── rand.go │ │ ├── rand_hwrng.go │ │ ├── rand_norng.go │ │ ├── runtime.go │ │ ├── runtime_arm7tdmi.go │ │ ├── runtime_atmega.go │ │ ├── runtime_atsamd21.go │ │ ├── runtime_atsamd21e18.go │ │ ├── runtime_atsamd21g18.go │ │ ├── runtime_atsamd51.go │ │ ├── runtime_atsamd51g19.go │ │ ├── runtime_atsamd51j19.go │ │ ├── runtime_atsamd51j20.go │ │ ├── runtime_atsamd51p19.go │ │ ├── runtime_atsamd51p20.go │ │ ├── runtime_atsame51j19.go │ │ ├── runtime_atsame54p20.go │ │ ├── runtime_atsame5x_can.go │ │ ├── runtime_attiny.go │ │ ├── runtime_avr.go │ │ ├── runtime_avrtiny.go │ │ ├── runtime_cortexm.go │ │ ├── runtime_cortexm_abort.go │ │ ├── runtime_cortexm_hardfault.go │ │ ├── runtime_cortexm_hardfault_debug.go │ │ ├── runtime_cortexm_qemu.go │ │ ├── runtime_esp32.go │ │ ├── runtime_esp32c3.go │ │ ├── runtime_esp32s3.go │ │ ├── runtime_esp32sx.go │ │ ├── runtime_esp32xx.go │ │ ├── runtime_esp8266.go │ │ ├── runtime_fe310.go │ │ ├── runtime_fe310_baremetal.go │ │ ├── runtime_fe310_qemu.go │ │ ├── runtime_k210.go │ │ ├── runtime_k210_baremetal.go │ │ ├── runtime_mimxrt1062.go │ │ ├── runtime_mimxrt1062_clock.go │ │ ├── runtime_mimxrt1062_mpu.go │ │ ├── runtime_mimxrt1062_time.go │ │ ├── runtime_nintendoswitch.S │ │ ├── runtime_nintendoswitch.go │ │ ├── runtime_nrf.go │ │ ├── runtime_nrf52840.go │ │ ├── runtime_nrf_bare.go │ │ ├── runtime_nrf_softdevice.go │ │ ├── runtime_nxpmk66f18.go │ │ ├── runtime_rp2.go │ │ ├── runtime_rp2040.go │ │ ├── runtime_rp2350.go │ │ ├── runtime_stm32.go │ │ ├── runtime_stm32_timers.go │ │ ├── runtime_stm32f103.go │ │ ├── runtime_stm32f4.go │ │ ├── runtime_stm32f405.go │ │ ├── runtime_stm32f407.go │ │ ├── runtime_stm32f469.go │ │ ├── runtime_stm32f7x2.go │ │ ├── runtime_stm32l0.go │ │ ├── runtime_stm32l0x1.go │ │ ├── runtime_stm32l0x2.go │ │ ├── runtime_stm32l4.go │ │ ├── runtime_stm32l4x2.go │ │ ├── runtime_stm32l4x5.go │ │ ├── runtime_stm32l4x6.go │ │ ├── runtime_stm32l5x2.go │ │ ├── runtime_stm32wlx.go │ │ ├── runtime_tinygoriscv.go │ │ ├── runtime_tinygoriscv64.go │ │ ├── runtime_tinygoriscv_qemu.go │ │ ├── runtime_tinygowasm.go │ │ ├── runtime_tinygowasm_unknown.go │ │ ├── runtime_tinygowasmp2.go │ │ ├── runtime_tkey.go │ │ ├── runtime_tkey_baremetal.go │ │ ├── runtime_unix.c │ │ ├── runtime_unix.go │ │ ├── runtime_wasip1.go │ │ ├── runtime_wasip2.go │ │ ├── runtime_wasm_js.go │ │ ├── runtime_wasm_js_scheduler.go │ │ ├── runtime_wasm_unknown.go │ │ ├── runtime_wasmentry.go │ │ ├── runtime_windows.go │ │ ├── scheduler.go │ │ ├── scheduler_cooperative.go │ │ ├── scheduler_cores.go │ │ ├── scheduler_none.go │ │ ├── scheduler_tasks.go │ │ ├── scheduler_threads.go │ │ ├── signal.c │ │ ├── signalstub.go │ │ ├── slice.go │ │ ├── stack.go │ │ ├── string.go │ │ ├── symtab.go │ │ ├── sync.go │ │ ├── synctest.go │ │ ├── time.go │ │ ├── time_go122.go │ │ ├── time_go123.go │ │ ├── time_nxpmk66f18.go │ │ ├── trace/ │ │ │ └── trace.go │ │ ├── volatile/ │ │ │ ├── bitband_nxpmk66f18.go │ │ │ ├── register.go │ │ │ └── volatile.go │ │ ├── wait_other.go │ │ ├── zero_new_alloc.go │ │ └── zero_new_alloc_noop.go │ ├── sync/ │ │ ├── cond.go │ │ ├── cond_test.go │ │ ├── doc.go │ │ ├── map.go │ │ ├── map_go123.go │ │ ├── map_test.go │ │ ├── mutex.go │ │ ├── mutex_test.go │ │ ├── once.go │ │ ├── once_test.go │ │ ├── oncefunc.go │ │ ├── oncefunc_test.go │ │ ├── pool.go │ │ ├── pool_test.go │ │ ├── waitgroup.go │ │ └── waitgroup_test.go │ ├── syscall/ │ │ ├── env_libc.go │ │ ├── env_nonhosted.go │ │ ├── env_wasip2.go │ │ ├── errno.go │ │ ├── errno_other.go │ │ ├── errno_wasilibc.go │ │ ├── errno_wasip2.go │ │ ├── file_emulated.go │ │ ├── file_hosted.go │ │ ├── libc_wasip2.go │ │ ├── mmap_unix_test.go │ │ ├── net.go │ │ ├── proc_emulated.go │ │ ├── proc_hosted.go │ │ ├── str.go │ │ ├── syscall.go │ │ ├── syscall_libc.go │ │ ├── syscall_libc_nintendoswitch.go │ │ ├── syscall_libc_wasi.go │ │ ├── syscall_linux.go │ │ ├── syscall_nonhosted.go │ │ ├── syscall_unix.go │ │ └── tables_nonhosted.go │ ├── testing/ │ │ ├── benchmark.go │ │ ├── benchmark_test.go │ │ ├── doc.go │ │ ├── fuzz.go │ │ ├── is_baremetal.go │ │ ├── is_not_baremetal.go │ │ ├── match.go │ │ ├── match_test.go │ │ ├── sub_test.go │ │ ├── testing.go │ │ └── testing_test.go │ ├── tinygo/ │ │ └── runtime.go │ └── unique/ │ ├── handle.go │ └── handle_test.go ├── stacksize/ │ ├── dwarf.go │ └── stacksize.go ├── targets/ │ ├── adafruit-esp32-feather-v2.json │ ├── ae-rp2040.json │ ├── arduino-leonardo.json │ ├── arduino-mega1280.json │ ├── arduino-mega2560.json │ ├── arduino-mkr1000.json │ ├── arduino-mkrwifi1010.json │ ├── arduino-nano-new.json │ ├── arduino-nano.json │ ├── arduino-nano33.json │ ├── arduino-zero.json │ ├── arduino.json │ ├── arm.ld │ ├── atmega1280.json │ ├── atmega1284p.json │ ├── atmega2560.json │ ├── atmega328p.json │ ├── atmega328pb.json │ ├── atmega32u4.json │ ├── atsamd21.ld │ ├── atsamd21e18a.json │ ├── atsamd21g18a.json │ ├── atsamd51.ld │ ├── atsamd51g19a.json │ ├── atsamd51j19a.json │ ├── atsamd51j20a.json │ ├── atsamd51j20a.ld │ ├── atsamd51p19a.json │ ├── atsamd51p20a.json │ ├── atsamd51p20a.ld │ ├── atsame51j19a.json │ ├── atsame54-xpro.json │ ├── atsame54p20a.json │ ├── atsame5xx19.ld │ ├── atsame5xx20-no-bootloader.ld │ ├── attiny1616.json │ ├── attiny85.json │ ├── avr.S │ ├── avr.json │ ├── avr.ld │ ├── avrtiny.S │ ├── avrtiny.json │ ├── avrtiny.ld │ ├── badger2040-w.json │ ├── badger2040.json │ ├── bluemicro840.json │ ├── bluepill-clone.json │ ├── bluepill.json │ ├── btt-skr-pico.json │ ├── challenger-rp2040.json │ ├── circuitplay-bluefruit.json │ ├── circuitplay-express.json │ ├── clue-alpha.json │ ├── clue.json │ ├── cortex-m-qemu.json │ ├── cortex-m-qemu.s │ ├── cortex-m.json │ ├── cortex-m0.json │ ├── cortex-m0plus.json │ ├── cortex-m3.json │ ├── cortex-m33.json │ ├── cortex-m4.json │ ├── cortex-m7.json │ ├── d1mini.json │ ├── digispark.json │ ├── elecrow-rp2040.json │ ├── elecrow-rp2350.json │ ├── esp-c3-32s-kit.json │ ├── esp32-c3-devkit-rust-1.json │ ├── esp32-coreboard-v2.json │ ├── esp32-mini32.json │ ├── esp32.json │ ├── esp32.ld │ ├── esp32c3-12f.json │ ├── esp32c3-supermini.json │ ├── esp32c3.json │ ├── esp32c3.ld │ ├── esp32s3.json │ ├── esp32s3.ld │ ├── esp8266.json │ ├── esp8266.ld │ ├── fe310.json │ ├── feather-m0-express.json │ ├── feather-m0.json │ ├── feather-m4-can.json │ ├── feather-m4.json │ ├── feather-nrf52840-sense.json │ ├── feather-nrf52840.json │ ├── feather-rp2040-boot-stage2.S │ ├── feather-rp2040.json │ ├── feather-stm32f405.json │ ├── gameboy-advance.json │ ├── gameboy-advance.ld │ ├── gameboy-advance.s │ ├── gemma-m0.json │ ├── gnse.json │ ├── gobadge.json │ ├── gopher-arcade.json │ ├── gopher-badge.json │ ├── gopherbot.json │ ├── gopherbot2.json │ ├── grandcentral-m4.json │ ├── hifive1b.json │ ├── hifive1b.ld │ ├── hw-651-s110v8.json │ ├── hw-651.json │ ├── itsybitsy-m0.json │ ├── itsybitsy-m4.json │ ├── itsybitsy-nrf52840.json │ ├── k210.json │ ├── kb2040.json │ ├── lgt92.json │ ├── lm3s6965.ld │ ├── lorae5.json │ ├── m5paper.json │ ├── m5stack-core2.json │ ├── m5stack.json │ ├── m5stamp-c3.json │ ├── m5stick-c.json │ ├── macropad-rp2040-boot-stage2.S │ ├── macropad-rp2040.json │ ├── maixbit.json │ ├── maixbit.ld │ ├── makerfabs-esp32c3spi35.json │ ├── matrixportal-m4.json │ ├── mch2022.json │ ├── mdbt50qrx-uf2.json │ ├── metro-m4-airlift.json │ ├── metro-rp2350.json │ ├── microbit-s110v8.json │ ├── microbit-v2-s113v7.json │ ├── microbit-v2-s140v7.json │ ├── microbit-v2.json │ ├── microbit.json │ ├── mimxrt1062-teensy40.ld │ ├── mksnanov3.json │ ├── nano-33-ble-s140v6-uf2.json │ ├── nano-33-ble-s140v7-uf2.json │ ├── nano-33-ble-s140v7.json │ ├── nano-33-ble.json │ ├── nano-33-ble.ld │ ├── nano-rp2040.json │ ├── nicenano.json │ ├── nintendoswitch.json │ ├── nintendoswitch.ld │ ├── nintendoswitch.s │ ├── nodemcu.json │ ├── nrf51-s110v8.json │ ├── nrf51-s110v8.ld │ ├── nrf51.json │ ├── nrf51.ld │ ├── nrf52-s132v6.json │ ├── nrf52-s132v6.ld │ ├── nrf52.json │ ├── nrf52.ld │ ├── nrf52833-s113v7.json │ ├── nrf52833-s113v7.ld │ ├── nrf52833-s140v7.json │ ├── nrf52833-s140v7.ld │ ├── nrf52833.json │ ├── nrf52833.ld │ ├── nrf52840-mdk-usb-dongle.json │ ├── nrf52840-mdk.json │ ├── nrf52840-s140v6-uf2-generic.json │ ├── nrf52840-s140v6-uf2.json │ ├── nrf52840-s140v6-uf2.ld │ ├── nrf52840-s140v7-uf2.json │ ├── nrf52840-s140v7-uf2.ld │ ├── nrf52840-s140v7.json │ ├── nrf52840-s140v7.ld │ ├── nrf52840.json │ ├── nrf52840.ld │ ├── nucleo-f103rb.json │ ├── nucleo-f722ze.json │ ├── nucleo-l031k6.json │ ├── nucleo-l432kc.json │ ├── nucleo-l476rg.json │ ├── nucleo-l552ze.json │ ├── nucleo-wl55jc.json │ ├── nxpmk66f18.ld │ ├── p1am-100.json │ ├── particle-3rd-gen.json │ ├── particle-argon.json │ ├── particle-boron.json │ ├── particle-xenon.json │ ├── pca10031.json │ ├── pca10040-s132v6.json │ ├── pca10040.json │ ├── pca10056-s140v6-uf2.json │ ├── pca10056-s140v7.json │ ├── pca10056.json │ ├── pca10059-s140v7.json │ ├── pca10059.json │ ├── pca10059.ld │ ├── pga2350.json │ ├── pico-boot-stage2.S │ ├── pico-plus2.json │ ├── pico-w.json │ ├── pico.json │ ├── pico2-ice.json │ ├── pico2-w.json │ ├── pico2.json │ ├── pinetime.json │ ├── pybadge.json │ ├── pygamer.json │ ├── pyportal.json │ ├── qtpy-esp32c3.json │ ├── qtpy-rp2040-boot-stage2.S │ ├── qtpy-rp2040.json │ ├── qtpy.json │ ├── rak4631.json │ ├── reelboard-s140v7.json │ ├── reelboard.json │ ├── riscv-qemu.json │ ├── riscv-qemu.ld │ ├── riscv.json │ ├── riscv.ld │ ├── riscv32.json │ ├── riscv64.json │ ├── rp2040-boot-stage2.S │ ├── rp2040.json │ ├── rp2040.ld │ ├── rp2350.json │ ├── rp2350.ld │ ├── rp2350_embedded_block.s │ ├── rp2350b.json │ ├── simavr.json │ ├── stm32.ld │ ├── stm32f103rb.ld │ ├── stm32f405.ld │ ├── stm32f407.ld │ ├── stm32f469.ld │ ├── stm32f469disco.json │ ├── stm32f4disco-1.json │ ├── stm32f4disco.json │ ├── stm32f7x2zetx.ld │ ├── stm32l031k6.ld │ ├── stm32l031x6.ld │ ├── stm32l072czt6.ld │ ├── stm32l0x1.json │ ├── stm32l0x2.json │ ├── stm32l4x2.ld │ ├── stm32l4x5.ld │ ├── stm32l4x6.ld │ ├── stm32l5x2xe.ld │ ├── stm32wl5x_cm4.json │ ├── stm32wle5.json │ ├── stm32wlx.ld │ ├── swan.json │ ├── teensy36.json │ ├── teensy36.s │ ├── teensy40.json │ ├── teensy40.s │ ├── teensy41.json │ ├── thingplus-rp2040.json │ ├── thumby.json │ ├── tiny2350.json │ ├── tkey.json │ ├── tkey.ld │ ├── trinket-m0.json │ ├── trinkey-qt2040-boot-stage2.S │ ├── trinkey-qt2040.json │ ├── tufty2040.json │ ├── wasi.json │ ├── wasip1.json │ ├── wasip2.json │ ├── wasm-undefined.txt │ ├── wasm-unknown.json │ ├── wasm.json │ ├── wasm_exec.js │ ├── waveshare-rp2040-tiny.json │ ├── waveshare-rp2040-zero.json │ ├── wioterminal.json │ ├── x9pro.json │ ├── xiao-ble.json │ ├── xiao-esp32c3.json │ ├── xiao-esp32s3.json │ ├── xiao-rp2040.json │ ├── xiao.json │ └── xtensa.json ├── testdata/ │ ├── alias.go │ ├── alias.txt │ ├── atomic.go │ ├── atomic.txt │ ├── binop.go │ ├── binop.txt │ ├── calls.go │ ├── calls.txt │ ├── cgo/ │ │ ├── extra.go │ │ ├── main.c │ │ ├── main.go │ │ ├── main.h │ │ ├── out.txt │ │ └── test.h │ ├── channel.go │ ├── channel.txt │ ├── corpus.yaml │ ├── embed/ │ │ ├── a/ │ │ │ └── b/ │ │ │ ├── .hidden │ │ │ ├── bar.txt │ │ │ └── foo.txt │ │ ├── embed.go │ │ ├── hello.txt │ │ └── out.txt │ ├── env.go │ ├── env.txt │ ├── errors/ │ │ ├── cgo.go │ │ ├── compiler.go │ │ ├── importcycle/ │ │ │ └── cycle.go │ │ ├── interp.go │ │ ├── invaliddep/ │ │ │ └── invaliddep.go │ │ ├── invalidmain.go │ │ ├── invalidname/ │ │ │ └── invalidname.go │ │ ├── invalidname.go │ │ ├── linker-flashoverflow.go │ │ ├── linker-ramoverflow.go │ │ ├── linker-undefined.go │ │ ├── loader-importcycle.go │ │ ├── loader-invaliddep.go │ │ ├── loader-invalidpackage.go │ │ ├── loader-nopackage.go │ │ ├── optimizer.go │ │ ├── syntax.go │ │ └── types.go │ ├── filesystem.go │ ├── filesystem.txt │ ├── float.go │ ├── float.txt │ ├── gc.go │ ├── gc.txt │ ├── generics/ │ │ ├── testa/ │ │ │ └── testa.go │ │ ├── testb/ │ │ │ └── testb.go │ │ └── value/ │ │ └── value.go │ ├── generics.go │ ├── generics.txt │ ├── go1.21.go │ ├── go1.21.txt │ ├── go1.22/ │ │ ├── go.mod │ │ ├── main.go │ │ └── out.txt │ ├── go1.23/ │ │ ├── go.mod │ │ ├── main.go │ │ └── out.txt │ ├── goroutines.go │ ├── goroutines.txt │ ├── init.go │ ├── init.txt │ ├── init_multi.go │ ├── init_multi.txt │ ├── interface.go │ ├── interface.txt │ ├── json.go │ ├── json.txt │ ├── ldflags.go │ ├── ldflags.txt │ ├── map.go │ ├── map.txt │ ├── math.go │ ├── math.txt │ ├── oldgo/ │ │ ├── go.mod │ │ ├── main.go │ │ └── out.txt │ ├── print.go │ ├── print.txt │ ├── rand.go │ ├── rand.txt │ ├── recover.go │ ├── recover.txt │ ├── reflect.go │ ├── reflect.txt │ ├── signal.go │ ├── signal.txt │ ├── slice.go │ ├── slice.txt │ ├── sort.go │ ├── sort.txt │ ├── stdlib.go │ ├── stdlib.txt │ ├── string.go │ ├── string.txt │ ├── structs.go │ ├── structs.txt │ ├── testing.go │ ├── testing.txt │ ├── timers.go │ ├── timers.txt │ ├── trivialpanic.go │ ├── wasmexit.go │ ├── wasmexit.js │ ├── wasmexport-noscheduler.go │ ├── wasmexport.go │ ├── wasmexport.js │ ├── wasmexport.txt │ ├── wasmfunc.go │ ├── wasmfunc.js │ ├── wasmfunc.txt │ ├── zeroalloc.go │ └── zeroalloc.txt ├── tests/ │ ├── os/ │ │ └── smoke/ │ │ └── smoke_test.go │ ├── runtime/ │ │ └── memhash_test.go │ ├── runtime_wasi/ │ │ └── malloc_test.go │ ├── testing/ │ │ ├── builderr/ │ │ │ ├── builderr.go │ │ │ └── builderr_test.go │ │ ├── chdir/ │ │ │ └── chdir.go │ │ ├── fail/ │ │ │ └── fail_test.go │ │ ├── nothing/ │ │ │ └── nothing.go │ │ ├── pass/ │ │ │ └── pass_test.go │ │ └── recurse/ │ │ ├── subdir/ │ │ │ └── subdir_test.go │ │ └── top_test.go │ ├── text/ │ │ └── template/ │ │ └── smoke/ │ │ ├── empty.go │ │ └── smoke_test.go │ ├── tinygotest/ │ │ ├── main.go │ │ └── main_test.go │ └── wasm/ │ ├── chan_test.go │ ├── event_test.go │ ├── fmt_test.go │ ├── fmtprint_test.go │ ├── go.mod │ ├── go.sum │ ├── log_test.go │ ├── setup_test.go │ └── testdata/ │ ├── chan.go │ ├── event.go │ ├── fmt.go │ ├── fmtprint.go │ └── log.go ├── tools/ │ ├── gen-critical-atomics/ │ │ └── gen-critical-atomics.go │ ├── gen-device-avr/ │ │ └── gen-device-avr.go │ ├── gen-device-svd/ │ │ └── gen-device-svd.go │ ├── sizediff │ └── tgtestjson.sh ├── transform/ │ ├── allocs.go │ ├── allocs_test.go │ ├── errors.go │ ├── gc.go │ ├── gc_test.go │ ├── interface-lowering.go │ ├── interface-lowering_test.go │ ├── interrupt.go │ ├── interrupt_test.go │ ├── llvm.go │ ├── maps.go │ ├── maps_test.go │ ├── optimizer.go │ ├── rtcalls.go │ ├── rtcalls_test.go │ ├── stacksize.go │ ├── stacksize_test.go │ ├── testdata/ │ │ ├── allocs.ll │ │ ├── allocs.out.ll │ │ ├── allocs2.go │ │ ├── gc-stackslots.ll │ │ ├── gc-stackslots.out.ll │ │ ├── interface.ll │ │ ├── interface.out.ll │ │ ├── interrupt.ll │ │ ├── interrupt.out.ll │ │ ├── maps.ll │ │ ├── maps.out.ll │ │ ├── reflect-implements.ll │ │ ├── reflect-implements.out.ll │ │ ├── reflect.go │ │ ├── stacksize.ll │ │ ├── stacksize.out.ll │ │ ├── stringequal.ll │ │ ├── stringequal.out.ll │ │ ├── stringtobytes.ll │ │ └── stringtobytes.out.ll │ ├── transform.go │ ├── transform_test.go │ └── util.go ├── util_unix.go └── util_windows.go
Showing preview only (1,244K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (19334 symbols across 1090 files)
FILE: builder/ar.go
function makeArchive (line 24) | func makeArchive(arfile *os.File, objs []string) error {
FILE: builder/build.go
type BuildResult (line 39) | type BuildResult struct
type packageAction (line 79) | type packageAction struct
function Build (line 99) | func Build(pkgName, outpath, tmpdir string, config *compileopts.Config) ...
function createEmbedObjectFile (line 1069) | func createEmbedObjectFile(data, hexSum, sourceFile, sourceDir, tmpdir s...
function optimizeProgram (line 1176) | func optimizeProgram(mod llvm.Module, config *compileopts.Config) error {
function makeGlobalsModule (line 1207) | func makeGlobalsModule(ctx llvm.Context, globals map[string]map[string]s...
type functionStackSize (line 1263) | type functionStackSize struct
function determineStackSizes (line 1273) | func determineStackSizes(mod llvm.Module, executable string) ([]string, ...
function modifyStackSizes (line 1386) | func modifyStackSizes(executable string, stackSizeLoads []string, stackS...
function printStacks (line 1459) | func printStacks(calculatedStacks []string, stackSizes map[string]functi...
function applyPatches (line 1477) | func applyPatches(executable string, bootPatches []string) (err error) {
function patchRP2040BootCRC (line 1498) | func patchRP2040BootCRC(executable string) error {
function lock (line 1535) | func lock(path string) func() {
function b2u8 (line 1545) | func b2u8(b bool) uint8 {
FILE: builder/builder_test.go
function TestClangAttributes (line 16) | func TestClangAttributes(t *testing.T) {
function testClangAttributes (line 88) | func testClangAttributes(t *testing.T, options *compileopts.Options) {
function TestMain (line 164) | func TestMain(m *testing.M) {
FILE: builder/buildid.go
function ReadBuildID (line 15) | func ReadBuildID() ([]byte, error) {
function readRawGoBuildID (line 111) | func readRawGoBuildID(f *os.File, prefixSize int) ([]byte, error) {
FILE: builder/cc.go
function compileAndCacheCFile (line 59) | func compileAndCacheCFile(abspath, tmpdir string, cflags []string, print...
function makeCFileCachePath (line 199) | func makeCFileCachePath(paths []string, depfileNameHash string) (string,...
function hashFile (line 229) | func hashFile(path string) (string, error) {
function readDepFile (line 261) | func readDepFile(filename string) ([]string, error) {
function parseDepFile (line 272) | func parseDepFile(s string) ([]string, error) {
FILE: builder/cc1as.cpp
function getOutputStream (line 246) | static std::unique_ptr<raw_fd_ostream>
function ExecuteAssemblerImpl (line 264) | static bool ExecuteAssemblerImpl(AssemblerInvocation &Opts,
function ExecuteAssembler (line 477) | bool ExecuteAssembler(AssemblerInvocation &Opts,
function LLVMErrorHandler (line 492) | static void LLVMErrorHandler(void *UserData, const char *Message,
function cc1as_main (line 502) | int cc1as_main(ArrayRef<const char *> Argv, const char *Argv0, void *Mai...
FILE: builder/cc1as.h
type AssemblerInvocation (line 18) | struct AssemblerInvocation {
FILE: builder/cc_test.go
function TestSplitDepFile (line 8) | func TestSplitDepFile(t *testing.T) {
FILE: builder/clang.cpp
function tinygo_clang_driver (line 26) | bool tinygo_clang_driver(int argc, char **argv) {
FILE: builder/commands.go
function init (line 19) | func init() {
function LookupCommand (line 65) | func LookupCommand(name string) (string, error) {
FILE: builder/config.go
function NewConfig (line 15) | func NewConfig(options *compileopts.Options) (*compileopts.Config, error) {
FILE: builder/darwin-libsystem.go
function makeDarwinLibSystemJob (line 14) | func makeDarwinLibSystemJob(config *compileopts.Config, tmpdir string) *...
FILE: builder/elfpatch.go
function getElfSectionData (line 9) | func getElfSectionData(executable string, sectionName string) ([]byte, e...
function replaceElfSection (line 26) | func replaceElfSection(executable string, sectionName string, data []byt...
FILE: builder/error.go
type MultiError (line 5) | type MultiError struct
method Error (line 10) | func (e *MultiError) Error() string {
function newMultiError (line 20) | func newMultiError(errs []error, importPath string) error {
type commandError (line 33) | type commandError struct
method Error (line 39) | func (e *commandError) Error() string {
FILE: builder/esp.go
type espImageSegment (line 21) | type espImageSegment struct
function makeESPFirmwareImage (line 34) | func makeESPFirmwareImage(infile, outfile, format string) error {
FILE: builder/jobs.go
constant jobRunnerDebug (line 18) | jobRunnerDebug = false
type compileJob (line 23) | type compileJob struct
function dummyCompileJob (line 35) | func dummyCompileJob(result string) *compileJob {
function runJobs (line 48) | func runJobs(job *compileJob, sema chan struct{}) error {
type errDependencyCycle (line 173) | type errDependencyCycle struct
method Error (line 177) | func (err errDependencyCycle) Error() string {
type intHeap (line 194) | type intHeap struct
method Push (line 198) | func (h *intHeap) Push(x interface{}) {
method Pop (line 202) | func (h *intHeap) Pop() interface{} {
function runJob (line 209) | func runJob(job *compileJob, doneChan chan *compileJob) {
FILE: builder/library.go
type Library (line 21) | type Library struct
method load (line 55) | func (l *Library) load(config *compileopts.Config, tmpdir string) (job...
FILE: builder/lld.cpp
function configure (line 14) | static void configure() {
function tinygo_link (line 25) | bool tinygo_link(int argc, char **argv) {
FILE: builder/mingw-w64.go
function makeMinGWExtraLibs (line 100) | func makeMinGWExtraLibs(tmpdir, goarch string) []*compileJob {
FILE: builder/musl.go
function buildMuslAllTypes (line 16) | func buildMuslAllTypes(arch, muslDir, outputBitsDir string) error {
FILE: builder/nrfutil.go
type jsonManifest (line 15) | type jsonManifest struct
type nrfInitPacket (line 29) | type nrfInitPacket struct
method createInitPacket (line 38) | func (p nrfInitPacket) createInitPacket() []byte {
function makeDFUFirmwareImage (line 50) | func makeDFUFirmwareImage(options *compileopts.Options, infile, outfile ...
FILE: builder/objcopy.go
constant maxPadBytes (line 14) | maxPadBytes = 4095
type objcopyError (line 17) | type objcopyError struct
method Error (line 22) | func (e objcopyError) Error() string {
type progSlice (line 29) | type progSlice
method Len (line 31) | func (s progSlice) Len() int { return len(s) }
method Less (line 32) | func (s progSlice) Less(i, j int) bool { return s[i].Paddr < s[j].Paddr }
method Swap (line 33) | func (s progSlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
function extractROM (line 37) | func extractROM(path string) (uint64, []byte, error) {
function objcopy (line 110) | func objcopy(infile, outfile, binaryFormat string) error {
FILE: builder/size-report.go
function writeSizeReport (line 13) | func writeSizeReport(sizes *programSize, filename, pkgName string) error {
FILE: builder/sizes.go
constant sizesDebug (line 24) | sizesDebug = false
type programSize (line 27) | type programSize struct
method sortedPackageNames (line 37) | func (ps *programSize) sortedPackageNames() []string {
method Flash (line 47) | func (ps *programSize) Flash() uint64 {
method RAM (line 52) | func (ps *programSize) RAM() uint64 {
method getPackage (line 58) | func (ps *programSize) getPackage(path string) *packageSize {
type packageSize (line 72) | type packageSize struct
method Flash (line 82) | func (ps *packageSize) Flash() uint64 {
method RAM (line 87) | func (ps *packageSize) RAM() uint64 {
method FlashPercent (line 93) | func (ps *packageSize) FlashPercent() float64 {
method addSize (line 99) | func (ps *packageSize) addSize(getField func(*packageSize, bool) *uint...
type addressLine (line 117) | type addressLine struct
type memorySection (line 128) | type memorySection struct
type memoryType (line 135) | type memoryType
method String (line 145) | func (t memoryType) String() string {
constant memoryCode (line 138) | memoryCode memoryType = iota + 1
constant memoryData (line 139) | memoryData
constant memoryROData (line 140) | memoryROData
constant memoryBSS (line 141) | memoryBSS
constant memoryStack (line 142) | memoryStack
function readProgramSizeFromDWARF (line 170) | func readProgramSizeFromDWARF(data *dwarf.Data, codeOffset, codeAlignmen...
function readDWARFConstant (line 313) | func readDWARFConstant(addressSize int, bytecode []byte) (uint64, error) {
function readULEB128 (line 343) | func readULEB128(buf []byte) (result uint64, n int) {
function readMachOSymbolAddresses (line 359) | func readMachOSymbolAddresses(path string) (map[string]int, []addressLin...
function loadProgramSize (line 421) | func loadProgramSize(path string, packagePathMap map[string]string) (*pr...
function readSection (line 874) | func readSection(section memorySection, addresses []addressLine, program...
function findPackagePath (line 942) | func findPackagePath(path string, packagePathMap map[string]string) (pac...
FILE: builder/sizes_test.go
type sizeTest (line 14) | type sizeTest struct
function TestBinarySize (line 34) | func TestBinarySize(t *testing.T) {
function TestSizeFull (line 78) | func TestSizeFull(t *testing.T) {
function buildBinary (line 118) | func buildBinary(t *testing.T, targetString, pkgName string) BuildResult {
FILE: builder/tools-builtin.go
constant hasBuiltinTools (line 19) | hasBuiltinTools = true
function RunTool (line 25) | func RunTool(tool string, args ...string) error {
FILE: builder/tools-external.go
constant hasBuiltinTools (line 7) | hasBuiltinTools = false
function RunTool (line 13) | func RunTool(tool string, args ...string) error {
FILE: builder/tools.go
function runCCompiler (line 16) | func runCCompiler(flags ...string) error {
function link (line 59) | func link(linker string, flags ...string) error {
function parseLLDErrors (line 93) | func parseLLDErrors(text string) error {
type LinkerError (line 185) | type LinkerError struct
method Error (line 189) | func (e LinkerError) Error() string {
FILE: builder/uf2.go
function convertELFFileToUF2File (line 18) | func convertELFFileToUF2File(infile, outfile string, uf2FamilyID string)...
function convertBinToUF2 (line 33) | func convertBinToUF2(input []byte, targetAddr uint32, uf2FamilyID string...
constant uf2MagicStart0 (line 55) | uf2MagicStart0 = 0x0A324655
constant uf2MagicStart1 (line 56) | uf2MagicStart1 = 0x9E5D5157
constant uf2MagicEnd (line 57) | uf2MagicEnd = 0x0AB16F30
type uf2Block (line 61) | type uf2Block struct
method Bytes (line 102) | func (b *uf2Block) Bytes() []byte {
method IncrementAddress (line 119) | func (b *uf2Block) IncrementAddress(count uint32) {
method SetData (line 124) | func (b *uf2Block) SetData(d []byte) {
method SetBlockNo (line 130) | func (b *uf2Block) SetBlockNo(bn int) {
method SetNumBlocks (line 135) | func (b *uf2Block) SetNumBlocks(total int) {
function newUF2Block (line 75) | func newUF2Block(targetAddr uint32, uf2FamilyID string) (*uf2Block, erro...
constant flagFamilyIDPresent (line 98) | flagFamilyIDPresent = 0x00002000
function split (line 140) | func split(input []byte, limit int) [][]byte {
FILE: builder/wasmbuiltins.go
constant wasmAllTypes (line 69) | wasmAllTypes = `
FILE: cgo/cgo.go
type cgoPackage (line 34) | type cgoPackage struct
method newCGoFile (line 434) | func (p *cgoPackage) newCGoFile(file *ast.File, index int) *cgoFile {
method makePathsAbsolute (line 447) | func (p *cgoPackage) makePathsAbsolute(args []string) {
method parseCGoPreprocessorLines (line 472) | func (p *cgoPackage) parseCGoPreprocessorLines(text string, pos token....
method makeUnionField (line 582) | func (p *cgoPackage) makeUnionField(typ *elaboratedTypeInfo) *ast.Stru...
method createUnionAccessor (line 645) | func (p *cgoPackage) createUnionAccessor(field *ast.Field, typeName st...
method createBitfieldGetter (line 760) | func (p *cgoPackage) createBitfieldGetter(bitfield bitfieldInfo, typeN...
method createBitfieldSetter (line 878) | func (p *cgoPackage) createBitfieldSetter(bitfield bitfieldInfo, typeN...
method isEquivalentAST (line 1043) | func (p *cgoPackage) isEquivalentAST(a, b ast.Node) bool {
method getUnnamedDeclName (line 1242) | func (p *cgoPackage) getUnnamedDeclName(prefix string, itf interface{}...
type cgoFile (line 56) | type cgoFile struct
method getASTDeclName (line 1253) | func (f *cgoFile) getASTDeclName(name string, found clangCursor, iscal...
method getASTDeclNode (line 1271) | func (f *cgoFile) getASTDeclNode(name string, found clangCursor) ast.N...
method walker (line 1388) | func (f *cgoFile) walker(cursor *astutil.Cursor, names map[string]clan...
type elaboratedTypeInfo (line 66) | type elaboratedTypeInfo struct
type bitfieldInfo (line 77) | type bitfieldInfo struct
type noescapingFunc (line 86) | type noescapingFunc struct
constant builtinAliasTypedefs (line 128) | builtinAliasTypedefs = `
constant generatedGoFilePrefixBase (line 148) | generatedGoFilePrefixBase = `
constant generatedGoFilePrefixOther (line 185) | generatedGoFilePrefixOther = generatedGoFilePrefixBase + `
constant generatedGoFilePrefixWindows (line 197) | generatedGoFilePrefixWindows = generatedGoFilePrefixBase + `
function Process (line 257) | func Process(files []*ast.File, dir, importPath string, fset *token.File...
function getPos (line 1226) | func getPos(node ast.Node) token.Pos {
function renameFieldKeywords (line 1467) | func renameFieldKeywords(fieldList *ast.FieldList) {
function renameFieldName (line 1473) | func renameFieldName(fieldList *ast.FieldList, name string) {
FILE: cgo/cgo_go122.go
function init (line 12) | func init() {
FILE: cgo/cgo_test.go
function normalizeResult (line 26) | func normalizeResult(t *testing.T, result string) string {
function TestCGo (line 37) | func TestCGo(t *testing.T) {
function Test_cgoPackage_isEquivalentAST (line 126) | func Test_cgoPackage_isEquivalentAST(t *testing.T) {
type simpleImporter (line 206) | type simpleImporter struct
method Import (line 228) | func (i *simpleImporter) Import(path string) (*types.Package, error) {
function newSimpleImporter (line 210) | func newSimpleImporter() *simpleImporter {
function formatDiagnostic (line 241) | func formatDiagnostic(err error) string {
FILE: cgo/const.go
constant precedenceLowest (line 32) | precedenceLowest = iota + 1
constant precedenceOr (line 33) | precedenceOr
constant precedenceXor (line 34) | precedenceXor
constant precedenceAnd (line 35) | precedenceAnd
constant precedenceShift (line 36) | precedenceShift
constant precedenceAdd (line 37) | precedenceAdd
constant precedenceMul (line 38) | precedenceMul
constant precedencePrefix (line 39) | precedencePrefix
function init (line 42) | func init() {
function parseConst (line 57) | func parseConst(pos token.Pos, fset *token.FileSet, value string, params...
function parseConstExpr (line 135) | func parseConstExpr(t *tokenizer, precedence int) (ast.Expr, *scanner.Er...
function parseIdent (line 162) | func parseIdent(t *tokenizer) (ast.Expr, *scanner.Error) {
function parseBasicLit (line 231) | func parseBasicLit(t *tokenizer) (ast.Expr, *scanner.Error) {
function parseParenExpr (line 239) | func parseParenExpr(t *tokenizer) (ast.Expr, *scanner.Error) {
function parseBinaryExpr (line 258) | func parseBinaryExpr(t *tokenizer, left ast.Expr) (ast.Expr, *scanner.Er...
function parseUnaryExpr (line 271) | func parseUnaryExpr(t *tokenizer) (ast.Expr, *scanner.Error) {
function unexpectedToken (line 284) | func unexpectedToken(t *tokenizer, expected token.Token) *scanner.Error {
type tokenizer (line 292) | type tokenizer struct
method Next (line 321) | func (t *tokenizer) Next() {
function newTokenizer (line 304) | func newTokenizer(start token.Pos, fset *token.FileSet, buf string, f *c...
FILE: cgo/const_test.go
function TestParseConst (line 11) | func TestParseConst(t *testing.T) {
FILE: cgo/libclang.go
function init (line 103) | func init() {
method readNames (line 113) | func (f *cgoFile) readNames(fragment string, cflags []string, filename s...
method createASTNode (line 213) | func (f *cgoFile) createASTNode(name string, c clangCursor) (ast.Node, a...
method isFunctionLikeMacro (line 479) | func (f *cgoFile) isFunctionLikeMacro(c clangCursor) bool {
method getMacro (line 488) | func (f *cgoFile) getMacro(c clangCursor) (pos token.Pos, value string) {
function getString (line 532) | func getString(clangString C.CXString) (s string) {
function tinygo_clang_globals_visitor (line 540) | func tinygo_clang_globals_visitor(c, parent C.GoCXCursor, client_data C....
method getUniqueLocationID (line 584) | func (f *cgoFile) getUniqueLocationID(pos token.Pos, cursor C.GoCXCursor...
method getCursorPosition (line 603) | func (p *cgoPackage) getCursorPosition(cursor C.GoCXCursor) token.Pos {
method getClangLocationPosition (line 611) | func (p *cgoPackage) getClangLocationPosition(location C.CXSourceLocatio...
method addError (line 667) | func (p *cgoPackage) addError(pos token.Pos, msg string) {
method addErrorAfter (line 673) | func (p *cgoPackage) addErrorAfter(pos token.Pos, after, msg string) {
method addErrorAt (line 689) | func (p *cgoPackage) addErrorAt(position token.Position, msg string) {
method makeDecayingASTType (line 699) | func (f *cgoFile) makeDecayingASTType(typ C.CXType, pos token.Pos) ast.E...
method makeASTType (line 744) | func (f *cgoFile) makeASTType(typ C.CXType, pos token.Pos) ast.Expr {
method getIntegerType (line 908) | func (p *cgoPackage) getIntegerType(name string, cursor clangCursor) *as...
method makeASTRecordType (line 980) | func (f *cgoFile) makeASTRecordType(cursor C.GoCXCursor, pos token.Pos) ...
function tinygo_clang_struct_visitor (line 1048) | func tinygo_clang_struct_visitor(c, parent C.GoCXCursor, client_data C.C...
function tinygo_clang_inclusion_visitor (line 1136) | func tinygo_clang_inclusion_visitor(includedFile C.CXFile, inclusionStac...
FILE: cgo/libclang_stubs.c
function CXCursor (line 8) | CXCursor tinygo_clang_getTranslationUnitCursor(CXTranslationUnit tu) {
function tinygo_clang_visitChildren (line 12) | unsigned tinygo_clang_visitChildren(CXCursor parent, CXCursorVisitor vis...
function CXString (line 16) | CXString tinygo_clang_getCursorSpelling(CXCursor c) {
function CXString (line 20) | CXString tinygo_clang_getCursorPrettyPrinted(CXCursor c, CXPrintingPolic...
function CXPrintingPolicy (line 24) | CXPrintingPolicy tinygo_clang_getCursorPrintingPolicy(CXCursor c) {
function tinygo_clang_getCursorKind (line 28) | enum CXCursorKind tinygo_clang_getCursorKind(CXCursor c) {
function CXType (line 32) | CXType tinygo_clang_getCursorType(CXCursor c) {
function CXCursor (line 36) | CXCursor tinygo_clang_getTypeDeclaration(CXType t) {
function CXType (line 40) | CXType tinygo_clang_getTypedefDeclUnderlyingType(CXCursor c) {
function CXType (line 44) | CXType tinygo_clang_getCursorResultType(CXCursor c) {
function tinygo_clang_Cursor_getNumArguments (line 48) | int tinygo_clang_Cursor_getNumArguments(CXCursor c) {
function CXCursor (line 52) | CXCursor tinygo_clang_Cursor_getArgument(CXCursor c, unsigned i) {
function tinygo_clang_Cursor_getStorageClass (line 56) | enum CX_StorageClass tinygo_clang_Cursor_getStorageClass(CXCursor c) {
function CXSourceLocation (line 60) | CXSourceLocation tinygo_clang_getCursorLocation(CXCursor c) {
function CXSourceRange (line 64) | CXSourceRange tinygo_clang_getCursorExtent(CXCursor c) {
function CXTranslationUnit (line 68) | CXTranslationUnit tinygo_clang_Cursor_getTranslationUnit(CXCursor c) {
function tinygo_clang_getEnumConstantDeclValue (line 72) | long long tinygo_clang_getEnumConstantDeclValue(CXCursor c) {
function CXType (line 76) | CXType tinygo_clang_getEnumDeclIntegerType(CXCursor c) {
function tinygo_clang_Cursor_isAnonymous (line 80) | unsigned tinygo_clang_Cursor_isAnonymous(CXCursor c) {
function tinygo_clang_Cursor_isBitField (line 84) | unsigned tinygo_clang_Cursor_isBitField(CXCursor c) {
function tinygo_clang_Cursor_isMacroFunctionLike (line 88) | unsigned tinygo_clang_Cursor_isMacroFunctionLike(CXCursor c) {
FILE: cgo/security.go
function checkCompilerFlags (line 224) | func checkCompilerFlags(name string, list []string) error {
function checkLinkerFlags (line 228) | func checkLinkerFlags(name string, list []string) error {
function checkFlags (line 232) | func checkFlags(name string, list []string, valid []*regexp.Regexp, vali...
function safeArg (line 296) | func safeArg(name string) bool {
FILE: cgo/security_test.go
function TestCheckCompilerFlags (line 94) | func TestCheckCompilerFlags(t *testing.T) {
function TestCheckLinkerFlags (line 214) | func TestCheckLinkerFlags(t *testing.T) {
function TestCheckFlagAllowDisallow (line 227) | func TestCheckFlagAllowDisallow(t *testing.T) {
FILE: cgo/sync.go
type refMap (line 14) | type refMap struct
method Put (line 21) | func (m *refMap) Put(v interface{}) unsafe.Pointer {
method Get (line 34) | func (m *refMap) Get(ref unsafe.Pointer) interface{} {
method Remove (line 41) | func (m *refMap) Remove(ref unsafe.Pointer) {
FILE: cgo/testdata/basic.out.go
function _Cgo_CString (line 9) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 12) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 15) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 17) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 22) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 24) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 29) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 31) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 36) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 38) | func _Cgo___get_errno() error {
type _Cgo_char (line 43) | type _Cgo_char
type _Cgo_schar (line 44) | type _Cgo_schar
type _Cgo_uchar (line 45) | type _Cgo_uchar
type _Cgo_short (line 46) | type _Cgo_short
type _Cgo_ushort (line 47) | type _Cgo_ushort
type _Cgo_int (line 48) | type _Cgo_int
type _Cgo_uint (line 49) | type _Cgo_uint
type _Cgo_long (line 50) | type _Cgo_long
type _Cgo_ulong (line 51) | type _Cgo_ulong
type _Cgo_longlong (line 52) | type _Cgo_longlong
type _Cgo_ulonglong (line 53) | type _Cgo_ulonglong
FILE: cgo/testdata/const.go
constant Foo (line 20) | Foo = C.foo
constant Bar (line 21) | Bar = C.bar
constant Baz (line 23) | Baz = C.referenced
constant fnlike (line 25) | fnlike = C.fnlike_val
constant square (line 26) | square = C.square_val
constant add (line 27) | add = C.add_val
FILE: cgo/testdata/const.out.go
function _Cgo_CString (line 9) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 12) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 15) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 17) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 22) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 24) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 29) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 31) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 36) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 38) | func _Cgo___get_errno() error {
type _Cgo_char (line 43) | type _Cgo_char
type _Cgo_schar (line 44) | type _Cgo_schar
type _Cgo_uchar (line 45) | type _Cgo_uchar
type _Cgo_short (line 46) | type _Cgo_short
type _Cgo_ushort (line 47) | type _Cgo_ushort
type _Cgo_int (line 48) | type _Cgo_int
type _Cgo_uint (line 49) | type _Cgo_uint
type _Cgo_long (line 50) | type _Cgo_long
type _Cgo_ulong (line 51) | type _Cgo_ulong
type _Cgo_longlong (line 52) | type _Cgo_longlong
type _Cgo_ulonglong (line 53) | type _Cgo_ulonglong
constant _Cgo_foo (line 56) | _Cgo_foo = 3
constant _Cgo_bar (line 57) | _Cgo_bar = _Cgo_foo
constant _Cgo_unreferenced (line 58) | _Cgo_unreferenced = 4
constant _Cgo_referenced (line 59) | _Cgo_referenced = _Cgo_unreferenced
constant _Cgo_fnlike_val (line 60) | _Cgo_fnlike_val = 5
constant _Cgo_square_val (line 61) | _Cgo_square_val = (20 * 20)
constant _Cgo_add_val (line 62) | _Cgo_add_val = (3 + 5)
FILE: cgo/testdata/errors.out.go
function _Cgo_CString (line 36) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 39) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 42) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 44) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 49) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 51) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 56) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 58) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 63) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 65) | func _Cgo___get_errno() error {
type _Cgo_char (line 70) | type _Cgo_char
type _Cgo_schar (line 71) | type _Cgo_schar
type _Cgo_uchar (line 72) | type _Cgo_uchar
type _Cgo_short (line 73) | type _Cgo_short
type _Cgo_ushort (line 74) | type _Cgo_ushort
type _Cgo_int (line 75) | type _Cgo_int
type _Cgo_uint (line 76) | type _Cgo_uint
type _Cgo_long (line 77) | type _Cgo_long
type _Cgo_ulong (line 78) | type _Cgo_ulong
type _Cgo_longlong (line 79) | type _Cgo_longlong
type _Cgo_ulonglong (line 80) | type _Cgo_ulonglong
type _Cgo_struct_point_t (line 82) | type _Cgo_struct_point_t struct
constant _Cgo_SOME_CONST_3 (line 88) | _Cgo_SOME_CONST_3 = 1234
constant _Cgo_SOME_PARAM_CONST_valid (line 89) | _Cgo_SOME_PARAM_CONST_valid = 3 + 4
FILE: cgo/testdata/flags.out.go
function _Cgo_CString (line 14) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 17) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 20) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 22) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 27) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 29) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 34) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 36) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 41) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 43) | func _Cgo___get_errno() error {
type _Cgo_char (line 48) | type _Cgo_char
type _Cgo_schar (line 49) | type _Cgo_schar
type _Cgo_uchar (line 50) | type _Cgo_uchar
type _Cgo_short (line 51) | type _Cgo_short
type _Cgo_ushort (line 52) | type _Cgo_ushort
type _Cgo_int (line 53) | type _Cgo_int
type _Cgo_uint (line 54) | type _Cgo_uint
type _Cgo_long (line 55) | type _Cgo_long
type _Cgo_ulong (line 56) | type _Cgo_ulong
type _Cgo_longlong (line 57) | type _Cgo_longlong
type _Cgo_ulonglong (line 58) | type _Cgo_ulonglong
constant _Cgo_BAR (line 61) | _Cgo_BAR = 3
constant _Cgo_FOO_H (line 62) | _Cgo_FOO_H = 1
FILE: cgo/testdata/symbols.go
function accessFunctions (line 20) | func accessFunctions() {
function accessGlobals (line 28) | func accessGlobals() {
FILE: cgo/testdata/symbols.out.go
function _Cgo_CString (line 9) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 12) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 15) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 17) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 22) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 24) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 29) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 31) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 36) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 38) | func _Cgo___get_errno() error {
type _Cgo_char (line 43) | type _Cgo_char
type _Cgo_schar (line 44) | type _Cgo_schar
type _Cgo_uchar (line 45) | type _Cgo_uchar
type _Cgo_short (line 46) | type _Cgo_short
type _Cgo_ushort (line 47) | type _Cgo_ushort
type _Cgo_int (line 48) | type _Cgo_int
type _Cgo_uint (line 49) | type _Cgo_uint
type _Cgo_long (line 50) | type _Cgo_long
type _Cgo_ulong (line 51) | type _Cgo_ulong
type _Cgo_longlong (line 52) | type _Cgo_longlong
type _Cgo_ulonglong (line 53) | type _Cgo_ulonglong
function _Cgo_foo (line 57) | func _Cgo_foo(a _Cgo_int, b _Cgo_int) _Cgo_int
function _Cgo_variadic0 (line 63) | func _Cgo_variadic0()
function _Cgo_variadic2 (line 69) | func _Cgo_variadic2(x _Cgo_int, y _Cgo_int)
function _Cgo_notEscapingFunction (line 80) | func _Cgo_notEscapingFunction(a *_Cgo_int)
FILE: cgo/testdata/types.go
function accessBitfields (line 154) | func accessBitfields() {
function accessUnion (line 166) | func accessUnion() {
FILE: cgo/testdata/types.out.go
function _Cgo_CString (line 9) | func _Cgo_CString(string) *_Cgo_char
function _Cgo_GoString (line 12) | func _Cgo_GoString(*_Cgo_char) string
function _Cgo___GoStringN (line 15) | func _Cgo___GoStringN(*_Cgo_char, uintptr) string
function _Cgo_GoStringN (line 17) | func _Cgo_GoStringN(cstr *_Cgo_char, length _Cgo_int) string {
function _Cgo___GoBytes (line 22) | func _Cgo___GoBytes(unsafe.Pointer, uintptr) []byte
function _Cgo_GoBytes (line 24) | func _Cgo_GoBytes(ptr unsafe.Pointer, length _Cgo_int) []byte {
function _Cgo___CBytes (line 29) | func _Cgo___CBytes([]byte) unsafe.Pointer
function _Cgo_CBytes (line 31) | func _Cgo_CBytes(b []byte) unsafe.Pointer {
function _Cgo___get_errno_num (line 36) | func _Cgo___get_errno_num() uintptr
function _Cgo___get_errno (line 38) | func _Cgo___get_errno() error {
type _Cgo_char (line 43) | type _Cgo_char
type _Cgo_schar (line 44) | type _Cgo_schar
type _Cgo_uchar (line 45) | type _Cgo_uchar
type _Cgo_short (line 46) | type _Cgo_short
type _Cgo_ushort (line 47) | type _Cgo_ushort
type _Cgo_int (line 48) | type _Cgo_int
type _Cgo_uint (line 49) | type _Cgo_uint
type _Cgo_long (line 50) | type _Cgo_long
type _Cgo_ulong (line 51) | type _Cgo_ulong
type _Cgo_longlong (line 52) | type _Cgo_longlong
type _Cgo_ulonglong (line 53) | type _Cgo_ulonglong
type _Cgo_struct_point2d_t (line 56) | type _Cgo_struct_point2d_t struct
type _Cgo_struct_point3d (line 61) | type _Cgo_struct_point3d struct
type _Cgo_struct_type1 (line 67) | type _Cgo_struct_type1 struct
type _Cgo_struct_type2 (line 72) | type _Cgo_struct_type2 struct
type _Cgo_union_union1_t (line 73) | type _Cgo_union_union1_t struct
type _Cgo_union_union3_t (line 75) | type _Cgo_union_union3_t struct
method unionfield_i (line 77) | func (union *_Cgo_union_union3_t) unionfield_i() *_Cgo_int {
method unionfield_d (line 80) | func (union *_Cgo_union_union3_t) unionfield_d() *float64 {
method unionfield_s (line 83) | func (union *_Cgo_union_union3_t) unionfield_s() *_Cgo_short {
type _Cgo_union_union2d (line 88) | type _Cgo_union_union2d struct
method unionfield_i (line 90) | func (union *_Cgo_union_union2d) unionfield_i() *_Cgo_int {
method unionfield_d (line 93) | func (union *_Cgo_union_union2d) unionfield_d() *[2]float64 {
type _Cgo_union_unionarray_t (line 98) | type _Cgo_union_unionarray_t struct
type _Cgo__Ctype_union___0 (line 100) | type _Cgo__Ctype_union___0 struct
method unionfield_area (line 102) | func (union *_Cgo__Ctype_union___0) unionfield_area() *_Cgo_point2d_t {
method unionfield_solid (line 105) | func (union *_Cgo__Ctype_union___0) unionfield_solid() *_Cgo_point3d_t {
type _Cgo_struct_struct_nested_t (line 109) | type _Cgo_struct_struct_nested_t struct
type _Cgo_union_union_nested_t (line 117) | type _Cgo_union_union_nested_t struct
method unionfield_point (line 119) | func (union *_Cgo_union_union_nested_t) unionfield_point() *_Cgo_point...
method unionfield_array (line 122) | func (union *_Cgo_union_union_nested_t) unionfield_array() *_Cgo_union...
method unionfield_thing (line 125) | func (union *_Cgo_union_union_nested_t) unionfield_thing() *_Cgo_union...
type _Cgo_struct_types_t (line 134) | type _Cgo_struct_types_t struct
type _Cgo_struct_bitfield_t (line 141) | type _Cgo_struct_bitfield_t struct
method bitfield_a (line 149) | func (s *_Cgo_struct_bitfield_t) bitfield_a() _Cgo_uchar { return s.__...
method set_bitfield_a (line 150) | func (s *_Cgo_struct_bitfield_t) set_bitfield_a(value _Cgo_uchar) {
method bitfield_b (line 153) | func (s *_Cgo_struct_bitfield_t) bitfield_b() _Cgo_uchar {
method set_bitfield_b (line 156) | func (s *_Cgo_struct_bitfield_t) set_bitfield_b(value _Cgo_uchar) {
method bitfield_c (line 159) | func (s *_Cgo_struct_bitfield_t) bitfield_c() _Cgo_uchar {
method set_bitfield_c (line 162) | func (s *_Cgo_struct_bitfield_t) set_bitfield_c(value _Cgo_uchar,
FILE: colorwriter.go
constant TermColorReset (line 9) | TermColorReset = "\x1b[0m"
constant TermColorYellow (line 10) | TermColorYellow = "\x1b[93m"
type ColorWriter (line 14) | type ColorWriter struct
method Write (line 22) | func (w *ColorWriter) Write(p []byte) (n int, err error) {
FILE: compileopts/config.go
type Config (line 30) | type Config struct
method Triple (line 38) | func (c *Config) Triple() string {
method CPU (line 44) | func (c *Config) CPU() string {
method BuildMode (line 49) | func (c *Config) BuildMode() string {
method Features (line 62) | func (c *Config) Features() string {
method ABI (line 74) | func (c *Config) ABI() string {
method GOOS (line 81) | func (c *Config) GOOS() string {
method GOARCH (line 88) | func (c *Config) GOARCH() string {
method GOARM (line 94) | func (c *Config) GOARM() string {
method GOMIPS (line 100) | func (c *Config) GOMIPS() string {
method BuildTags (line 105) | func (c *Config) BuildTags() []string {
method GC (line 128) | func (c *Config) GC() string {
method NeedsStackObjects (line 140) | func (c *Config) NeedsStackObjects() bool {
method Scheduler (line 157) | func (c *Config) Scheduler() string {
method Serial (line 170) | func (c *Config) Serial() string {
method OptLevel (line 182) | func (c *Config) OptLevel() (level string, speedLevel, sizeLevel int) {
method PanicStrategy (line 204) | func (c *Config) PanicStrategy() string {
method AutomaticStackSize (line 211) | func (c *Config) AutomaticStackSize() bool {
method StackSize (line 220) | func (c *Config) StackSize() uint64 {
method MaxStackAlloc (line 228) | func (c *Config) MaxStackAlloc() uint64 {
method RP2040BootPatch (line 238) | func (c *Config) RP2040BootPatch() bool {
method LibcNeedsMalloc (line 269) | func (c *Config) LibcNeedsMalloc() bool {
method LibraryPath (line 278) | func (c *Config) LibraryPath(name string) string {
method DefaultBinaryExtension (line 311) | func (c *Config) DefaultBinaryExtension() string {
method CFlags (line 334) | func (c *Config) CFlags(libclang bool) []string {
method LibcCFlags (line 379) | func (c *Config) LibcCFlags() []string {
method LDFlags (line 453) | func (c *Config) LDFlags() []string {
method ExtraFiles (line 471) | func (c *Config) ExtraFiles() []string {
method DumpSSA (line 477) | func (c *Config) DumpSSA() bool {
method VerifyIR (line 483) | func (c *Config) VerifyIR() bool {
method Debug (line 490) | func (c *Config) Debug() bool {
method BinaryFormat (line 496) | func (c *Config) BinaryFormat(ext string) string {
method Programmer (line 534) | func (c *Config) Programmer() (method, openocdInterface string) {
method OpenOCDConfiguration (line 555) | func (c *Config) OpenOCDConfiguration() (args []string, err error) {
method CodeModel (line 591) | func (c *Config) CodeModel() string {
method RelocationModel (line 601) | func (c *Config) RelocationModel() string {
method EmulatorName (line 611) | func (c *Config) EmulatorName() string {
method EmulatorFormat (line 622) | func (c *Config) EmulatorFormat() (format, fileExt string) {
method Emulator (line 634) | func (c *Config) Emulator(format, binary string) ([]string, error) {
function CanonicalArchName (line 247) | func CanonicalArchName(triple string) string {
function MuslArchitecture (line 263) | func MuslArchitecture(triple string) string {
type TestConfig (line 650) | type TestConfig struct
FILE: compileopts/options.go
type Options (line 23) | type Options struct
method Verify (line 66) | func (o *Options) Verify() error {
function isInArray (line 129) | func isInArray(arr []string, item string) bool {
FILE: compileopts/options_test.go
function TestVerifyOptions (line 10) | func TestVerifyOptions(t *testing.T) {
FILE: compileopts/target.go
type TargetSpec (line 25) | type TargetSpec struct
method overrideProperties (line 73) | func (spec *TargetSpec) overrideProperties(child *TargetSpec) error {
method load (line 120) | func (spec *TargetSpec) load(r io.Reader) error {
method loadFromGivenStr (line 134) | func (spec *TargetSpec) loadFromGivenStr(str string) error {
method resolveInherits (line 150) | func (spec *TargetSpec) resolveInherits() error {
method LookupGDB (line 547) | func (spec *TargetSpec) LookupGDB() (string, error) {
function LoadTarget (line 180) | func LoadTarget(options *Options) (*TargetSpec, error) {
function GetTargetSpecs (line 224) | func GetTargetSpecs() (map[string]*TargetSpec, error) {
function defaultTarget (line 260) | func defaultTarget(options *Options) (*TargetSpec, error) {
FILE: compileopts/target_test.go
function TestLoadTarget (line 10) | func TestLoadTarget(t *testing.T) {
function TestOverrideProperties (line 26) | func TestOverrideProperties(t *testing.T) {
FILE: compiler/alias.go
method createAlias (line 41) | func (b *builder) createAlias(alias llvm.Value) {
FILE: compiler/asserts.go
method createLookupBoundsCheck (line 19) | func (b *builder) createLookupBoundsCheck(arrayLen, index llvm.Value) {
method createSliceBoundsCheck (line 44) | func (b *builder) createSliceBoundsCheck(capacity, low, high, max llvm.V...
method createSliceToArrayPointerCheck (line 83) | func (b *builder) createSliceToArrayPointerCheck(sliceLen llvm.Value, ar...
method createUnsafeSliceStringCheck (line 95) | func (b *builder) createUnsafeSliceStringCheck(name string, ptr, len llv...
method createChanBoundsCheck (line 126) | func (b *builder) createChanBoundsCheck(elementSize uint64, bufSize llvm...
method createNilCheck (line 164) | func (b *builder) createNilCheck(inst ssa.Value, ptr llvm.Value, blockPr...
method createNegativeShiftCheck (line 207) | func (b *builder) createNegativeShiftCheck(shift llvm.Value) {
method createDivideByZeroCheck (line 221) | func (b *builder) createDivideByZeroCheck(y llvm.Value) {
method createRuntimeAssert (line 233) | func (b *builder) createRuntimeAssert(assert llvm.Value, blockPrefix, as...
method extendInteger (line 265) | func (b *builder) extendInteger(value llvm.Value, valueType types.Type, ...
FILE: compiler/atomic.go
method createAtomicOp (line 10) | func (b *builder) createAtomicOp(name string) llvm.Value {
FILE: compiler/calls.go
constant maxFieldsPerParam (line 16) | maxFieldsPerParam = 3
type paramInfo (line 20) | type paramInfo struct
type paramFlags (line 29) | type paramFlags
constant paramIsGoParam (line 34) | paramIsGoParam = 1 << iota
constant paramIsReadonly (line 37) | paramIsReadonly
method createRuntimeCallCommon (line 42) | func (b *builder) createRuntimeCallCommon(fnName string, args []llvm.Val...
method createRuntimeCall (line 61) | func (b *builder) createRuntimeCall(fnName string, args []llvm.Value, na...
method createRuntimeInvoke (line 70) | func (b *builder) createRuntimeInvoke(fnName string, args []llvm.Value, ...
method createCall (line 76) | func (b *builder) createCall(fnType llvm.Type, fn llvm.Value, args []llv...
method createInvoke (line 95) | func (b *builder) createInvoke(fnType llvm.Type, fn llvm.Value, args []l...
method expandFormalParamType (line 104) | func (c *compilerContext) expandFormalParamType(t llvm.Type, name string...
method expandFormalParamOffsets (line 122) | func (b *builder) expandFormalParamOffsets(t llvm.Type) []uint64 {
method expandFormalParam (line 142) | func (b *builder) expandFormalParam(v llvm.Value) []llvm.Value {
method flattenAggregateType (line 164) | func (c *compilerContext) flattenAggregateType(t llvm.Type, name string,...
method getParamInfo (line 211) | func (c *compilerContext) getParamInfo(t llvm.Type, name string, goType ...
function extractSubfield (line 236) | func extractSubfield(t types.Type, field int) types.Type {
method flattenAggregateTypeOffsets (line 260) | func (c *compilerContext) flattenAggregateTypeOffsets(t llvm.Type) []uin...
method flattenAggregate (line 283) | func (b *builder) flattenAggregate(v llvm.Value) []llvm.Value {
method collapseFormalParam (line 304) | func (b *builder) collapseFormalParam(t llvm.Type, fields []llvm.Value) ...
method collapseFormalParamInternal (line 314) | func (b *builder) collapseFormalParamInternal(t llvm.Type, fields []llvm...
FILE: compiler/channel.go
method createMakeChan (line 16) | func (b *builder) createMakeChan(expr *ssa.MakeChan) llvm.Value {
method createChanSend (line 31) | func (b *builder) createChanSend(instr *ssa.Send) {
method createChanRecv (line 64) | func (b *builder) createChanRecv(unop *ssa.UnOp) llvm.Value {
method createChanClose (line 103) | func (b *builder) createChanClose(ch llvm.Value) {
method createSelect (line 109) | func (b *builder) createSelect(expr *ssa.Select) llvm.Value {
method getChanSelectResult (line 263) | func (b *builder) getChanSelectResult(expr *ssa.Extract) llvm.Value {
FILE: compiler/compiler.go
function init (line 26) | func init() {
type Config (line 40) | type Config struct
type compilerContext (line 68) | type compilerContext struct
method dispose (line 143) | func (c *compilerContext) dispose() {
method getRuntimeType (line 373) | func (c *compilerContext) getRuntimeType(name string) types.Type {
method getLLVMRuntimeType (line 380) | func (c *compilerContext) getLLVMRuntimeType(name string) llvm.Type {
method getLLVMType (line 387) | func (c *compilerContext) getLLVMType(goType types.Type) llvm.Type {
method makeLLVMType (line 404) | func (c *compilerContext) makeLLVMType(goType types.Type) llvm.Type {
method getDIType (line 498) | func (c *compilerContext) getDIType(typ types.Type) llvm.Metadata {
method createDIType (line 509) | func (c *compilerContext) createDIType(typ types.Type) llvm.Metadata {
method attachDebugInfo (line 783) | func (c *compilerContext) attachDebugInfo(f *ssa.Function) llvm.Metada...
method attachDebugInfoRaw (line 792) | func (c *compilerContext) attachDebugInfoRaw(f *ssa.Function, llvmFn l...
method getDIFile (line 823) | func (c *compilerContext) getDIFile(filename string) llvm.Metadata {
method createPackage (line 836) | func (c *compilerContext) createPackage(irbuilder llvm.Builder, pkg *s...
method createEmbedGlobal (line 968) | func (c *compilerContext) createEmbedGlobal(member *ssa.Global, global...
method getEmbedFileString (line 1133) | func (c *compilerContext) getEmbedFileString(file *loader.EmbedFile) l...
method maxSliceSize (line 2050) | func (c *compilerContext) maxSliceSize(elementType llvm.Type) uint64 {
method createConst (line 2970) | func (c *compilerContext) createConst(expr *ssa.Const, pos token.Pos) ...
function newCompilerContext (line 99) | func newCompilerContext(moduleName string, machine llvm.TargetMachine, c...
type builder (line 148) | type builder struct
method setDebugLocation (line 697) | func (b *builder) setDebugLocation(pos token.Pos) {
method getLocalVariable (line 744) | func (b *builder) getLocalVariable(variable *types.Var) llvm.Metadata {
method createFunctionStart (line 1152) | func (b *builder) createFunctionStart(intrinsic bool) {
method createFunction (line 1346) | func (b *builder) createFunction() {
method createInstruction (line 1498) | func (b *builder) createInstruction(instr ssa.Instruction) {
method createBuiltin (line 1590) | func (b *builder) createBuiltin(argTypes []types.Type, argValues []llv...
method createFunctionCall (line 1887) | func (b *builder) createFunctionCall(instr *ssa.CallCommon) (llvm.Valu...
method getValue (line 2011) | func (b *builder) getValue(expr ssa.Value, pos token.Pos) llvm.Value {
method createExpr (line 2076) | func (b *builder) createExpr(expr ssa.Value) (llvm.Value, error) {
method createBinOp (line 2559) | func (b *builder) createBinOp(op token.Token, typ, ytyp types.Type, x,...
method createConvert (line 3104) | func (b *builder) createConvert(typeFrom, typeTo types.Type, value llv...
method createUnOp (line 3315) | func (b *builder) createUnOp(unop *ssa.UnOp) (llvm.Value, error) {
function newBuilder (line 181) | func newBuilder(c *compilerContext, irbuilder llvm.Builder, f *ssa.Funct...
type blockInfo (line 195) | type blockInfo struct
type deferBuiltin (line 208) | type deferBuiltin struct
type phiNode (line 215) | type phiNode struct
function NewTargetMachine (line 223) | func NewTargetMachine(config *Config) (llvm.TargetMachine, error) {
function Sizes (line 263) | func Sizes(machine llvm.TargetMachine) types.Sizes {
function CompilePackage (line 291) | func CompilePackage(moduleName string, pkg *loader.Package, ssaPkg *ssa....
function isPointer (line 487) | func isPointer(typ types.Type) bool {
type posser (line 1449) | type posser interface
function getPos (line 1459) | func getPos(val posser) token.Pos {
FILE: compiler/compiler_test.go
type testCase (line 20) | type testCase struct
function TestCompiler (line 28) | func TestCompiler(t *testing.T) {
function fuzzyEqualIR (line 134) | func fuzzyEqualIR(s1, s2 string) bool {
function filterIrrelevantIRLines (line 153) | func filterIrrelevantIRLines(lines []string) []string {
function TestCompilerErrors (line 180) | func TestCompilerErrors(t *testing.T) {
function testCompilePackage (line 217) | func testCompilePackage(t *testing.T, options *compileopts.Options, file...
FILE: compiler/defer.go
method supportsRecover (line 28) | func (b *builder) supportsRecover() bool {
method hasDeferFrame (line 45) | func (b *builder) hasDeferFrame() bool {
method deferInitFunc (line 55) | func (b *builder) deferInitFunc() {
method createLandingPad (line 89) | func (b *builder) createLandingPad() {
method createCheckpoint (line 110) | func (b *builder) createCheckpoint(ptr llvm.Value) llvm.Value {
method createInvokeCheckpoint (line 232) | func (b *builder) createInvokeCheckpoint() {
method isInLoop (line 245) | func (b *builder) isInLoop() bool {
method strongConnect (line 252) | func (b *builder) strongConnect(block *ssa.BasicBlock) {
type tarjanNode (line 327) | type tarjanNode struct
method createDefer (line 343) | func (b *builder) createDefer(instr *ssa.Defer) {
method createRunDefers (line 503) | func (b *builder) createRunDefers() {
FILE: compiler/errors.go
method makeError (line 14) | func (c *compilerContext) makeError(pos token.Pos, msg string) types.Err...
method addError (line 23) | func (c *compilerContext) addError(pos token.Pos, msg string) {
function getPosition (line 29) | func getPosition(val llvm.Value) token.Position {
FILE: compiler/func.go
method createFuncValue (line 15) | func (b *builder) createFuncValue(funcPtr, context llvm.Value, sig *type...
method extractFuncScalar (line 26) | func (b *builder) extractFuncScalar(funcValue llvm.Value) llvm.Value {
method extractFuncContext (line 32) | func (b *builder) extractFuncContext(funcValue llvm.Value) llvm.Value {
method decodeFuncValue (line 38) | func (b *builder) decodeFuncValue(funcValue llvm.Value) (funcPtr, contex...
method getFuncType (line 45) | func (c *compilerContext) getFuncType(typ *types.Signature) llvm.Type {
method getLLVMFunctionType (line 50) | func (c *compilerContext) getLLVMFunctionType(typ *types.Signature) llvm...
method parseMakeClosure (line 99) | func (b *builder) parseMakeClosure(expr *ssa.MakeClosure) (llvm.Value, e...
FILE: compiler/gc.go
method trackExpr (line 15) | func (b *builder) trackExpr(expr ssa.Value, value llvm.Value) {
method trackValue (line 55) | func (b *builder) trackValue(value llvm.Value) {
method trackPointer (line 83) | func (b *builder) trackPointer(value llvm.Value) {
function typeHasPointers (line 90) | func typeHasPointers(t llvm.Type) bool {
FILE: compiler/goroutine.go
method createGo (line 16) | func (b *builder) createGo(instr *ssa.Go) {
method createWasmExport (line 128) | func (b *builder) createWasmExport() {
method createGoroutineStartWrapper (line 289) | func (c *compilerContext) createGoroutineStartWrapper(fnType llvm.Type, ...
FILE: compiler/inlineasm.go
method createInlineAsm (line 24) | func (b *builder) createInlineAsm(args []ssa.Value) (llvm.Value, error) {
method createInlineAsmFull (line 46) | func (b *builder) createInlineAsmFull(instr *ssa.CallCommon) (llvm.Value...
method emitSVCall (line 144) | func (b *builder) emitSVCall(args []ssa.Value, pos token.Pos) (llvm.Valu...
method emitSV64Call (line 182) | func (b *builder) emitSV64Call(args []ssa.Value, pos token.Pos) (llvm.Va...
method emitCSROperation (line 217) | func (b *builder) emitCSROperation(call *ssa.CallCommon) (llvm.Value, er...
method createInterruptCheckpoint (line 257) | func (b *builder) createInterruptCheckpoint(ptr ssa.Value) llvm.Value {
FILE: compiler/interface.go
constant typeKindChan (line 45) | typeKindChan = 19
constant typeKindInterface (line 46) | typeKindInterface = 20
constant typeKindPointer (line 47) | typeKindPointer = 21
constant typeKindSlice (line 48) | typeKindSlice = 22
constant typeKindArray (line 49) | typeKindArray = 23
constant typeKindSignature (line 50) | typeKindSignature = 24
constant typeKindMap (line 51) | typeKindMap = 25
constant typeKindStruct (line 52) | typeKindStruct = 26
constant structFieldFlagAnonymous (line 58) | structFieldFlagAnonymous = 1 << iota
constant structFieldFlagHasTag (line 59) | structFieldFlagHasTag
constant structFieldFlagIsExported (line 60) | structFieldFlagIsExported
constant structFieldFlagIsEmbedded (line 61) | structFieldFlagIsEmbedded
type reflectChanDir (line 64) | type reflectChanDir
constant refRecvDir (line 67) | refRecvDir reflectChanDir = 1 << iota
constant refSendDir (line 68) | refSendDir
constant refBothDir (line 69) | refBothDir = refRecvDir | refSendDir
method createMakeInterface (line 78) | func (b *builder) createMakeInterface(val llvm.Value, typ types.Type, po...
method extractValueFromInterface (line 91) | func (b *builder) extractValueFromInterface(itf llvm.Value, llvmType llv...
method pkgPathPtr (line 96) | func (c *compilerContext) pkgPathPtr(pkgpath string) llvm.Value {
method getTypeCode (line 124) | func (c *compilerContext) getTypeCode(typ types.Type) llvm.Value {
function getTypeKind (line 468) | func getTypeKind(t types.Type) uint8 {
function getTypeCodeName (line 517) | func getTypeCodeName(t types.Type) (string, bool) {
method getTypeMethodSet (line 611) | func (c *compilerContext) getTypeMethodSet(typ types.Type) llvm.Value {
method getMethodSignatureName (line 650) | func (c *compilerContext) getMethodSignatureName(method *types.Func) str...
method getMethodSignature (line 664) | func (c *compilerContext) getMethodSignature(method *types.Func) llvm.Va...
method createTypeAssert (line 686) | func (b *builder) createTypeAssert(expr *ssa.TypeAssert) llvm.Value {
method getMethodsString (line 778) | func (c *compilerContext) getMethodsString(itf *types.Interface) string {
method getInterfaceImplementsFunc (line 788) | func (c *compilerContext) getInterfaceImplementsFunc(assertedType types....
method getInvokeFunction (line 805) | func (c *compilerContext) getInvokeFunction(instr *ssa.CallCommon) llvm....
method getInterfaceInvokeWrapper (line 831) | func (c *compilerContext) getInterfaceInvokeWrapper(fn *ssa.Function, ll...
function methodSignature (line 902) | func methodSignature(method *types.Func) string {
function signature (line 911) | func signature(sig *types.Signature) string {
function typestring (line 946) | func typestring(t types.Type) string {
FILE: compiler/interrupt.go
method createInterruptGlobal (line 16) | func (b *builder) createInterruptGlobal(instr *ssa.CallCommon) (llvm.Val...
FILE: compiler/intrinsics.go
method defineIntrinsicFunction (line 19) | func (b *builder) defineIntrinsicFunction() {
method createMemoryCopyImpl (line 51) | func (b *builder) createMemoryCopyImpl() {
method createMemoryZeroImpl (line 71) | func (b *builder) createMemoryZeroImpl() {
method createStackSaveImpl (line 86) | func (b *builder) createStackSaveImpl() {
method getMemsetFunc (line 93) | func (c *compilerContext) getMemsetFunc() llvm.Value {
method createKeepAliveImpl (line 105) | func (b *builder) createKeepAliveImpl() {
method createAbiEscapeImpl (line 128) | func (b *builder) createAbiEscapeImpl() {
method createMachineKeepAliveImpl (line 151) | func (b *builder) createMachineKeepAliveImpl() {
method defineMathOp (line 183) | func (b *builder) defineMathOp() {
method defineMathBitsIntrinsic (line 211) | func (b *builder) defineMathBitsIntrinsic() bool {
FILE: compiler/ircheck/check.go
type checker (line 14) | type checker struct
method checkType (line 18) | func (c *checker) checkType(t llvm.Type, checked map[llvm.Type]struct{...
method checkValue (line 86) | func (c *checker) checkValue(v llvm.Value, types map[llvm.Type]struct{...
method checkInstruction (line 100) | func (c *checker) checkInstruction(inst llvm.Value, types map[llvm.Typ...
method checkBasicBlock (line 134) | func (c *checker) checkBasicBlock(bb llvm.BasicBlock, types map[llvm.T...
method checkFunction (line 151) | func (c *checker) checkFunction(fn llvm.Value, types map[llvm.Type]str...
function Module (line 168) | func Module(mod llvm.Module) []error {
FILE: compiler/ircheck/errors.go
function errorAt (line 14) | func errorAt(inst llvm.Value, msg string) scanner.Error {
function getPosition (line 23) | func getPosition(val llvm.Value) token.Position {
FILE: compiler/llvm.go
method createTemporaryAlloca (line 24) | func (b *builder) createTemporaryAlloca(t llvm.Type, name string) (alloc...
method insertBasicBlock (line 33) | func (b *builder) insertBasicBlock(name string) llvm.BasicBlock {
method emitLifetimeEnd (line 48) | func (b *builder) emitLifetimeEnd(ptr, size llvm.Value) {
method emitPointerPack (line 57) | func (b *builder) emitPointerPack(values []llvm.Value) llvm.Value {
method emitPointerUnpack (line 159) | func (b *builder) emitPointerUnpack(ptr llvm.Value, valueTypes []llvm.Ty...
method makeGlobalArray (line 211) | func (c *compilerContext) makeGlobalArray(buf []byte, name string, eleme...
method createObjectLayout (line 233) | func (c *compilerContext) createObjectLayout(t llvm.Type, pos token.Pos)...
method getPointerBitmap (line 365) | func (c *compilerContext) getPointerBitmap(typ llvm.Type, pos token.Pos)...
method archFamily (line 418) | func (c *compilerContext) archFamily() string {
method isThumb (line 424) | func (c *compilerContext) isThumb() bool {
method readStackPointer (line 442) | func (b *builder) readStackPointer() llvm.Value {
method writeStackPointer (line 457) | func (b *builder) writeStackPointer(sp llvm.Value) {
method createZExtOrTrunc (line 472) | func (b *builder) createZExtOrTrunc(value llvm.Value, t llvm.Type) llvm....
function reverseBytes (line 485) | func reverseBytes(buf []byte) {
FILE: compiler/llvmutil/llvm.go
function CreateEntryBlockAlloca (line 21) | func CreateEntryBlockAlloca(builder llvm.Builder, t llvm.Type, name stri...
function CreateTemporaryAlloca (line 40) | func CreateTemporaryAlloca(builder llvm.Builder, mod llvm.Module, t llvm...
function CreateInstructionAlloca (line 52) | func CreateInstructionAlloca(builder llvm.Builder, mod llvm.Module, t ll...
function EmitLifetimeEnd (line 75) | func EmitLifetimeEnd(builder llvm.Builder, mod llvm.Module, ptr, size ll...
function getLifetimeStartFunc (line 82) | func getLifetimeStartFunc(mod llvm.Module) (llvm.Type, llvm.Value) {
function getLifetimeEndFunc (line 96) | func getLifetimeEndFunc(mod llvm.Module) (llvm.Type, llvm.Value) {
function SplitBasicBlock (line 111) | func SplitBasicBlock(builder llvm.Builder, afterInst llvm.Value, insertA...
function AppendToGlobal (line 182) | func AppendToGlobal(mod llvm.Module, globalName string, values ...llvm.V...
function Version (line 212) | func Version() int {
function ByteOrder (line 223) | func ByteOrder(target string) binary.ByteOrder {
FILE: compiler/map.go
method createMakeMap (line 16) | func (b *builder) createMakeMap(expr *ssa.MakeMap) (llvm.Value, error) {
method createMapLookup (line 56) | func (b *builder) createMapLookup(keyType, valueType types.Type, m, key ...
method createMapUpdate (line 120) | func (b *builder) createMapUpdate(keyType types.Type, m, key, value llvm...
method createMapDelete (line 152) | func (b *builder) createMapDelete(keyType types.Type, m, key llvm.Value,...
method createMapClear (line 183) | func (b *builder) createMapClear(m llvm.Value) {
method createMapIteratorNext (line 190) | func (b *builder) createMapIteratorNext(rangeVal ssa.Value, llvmRangeVal...
function hashmapIsBinaryKey (line 250) | func hashmapIsBinaryKey(keyType types.Type) bool {
method zeroUndefBytes (line 274) | func (b *builder) zeroUndefBytes(llvmType llvm.Type, ptr llvm.Value) err...
FILE: compiler/sizes.go
type stdSizes (line 13) | type stdSizes struct
method Alignof (line 19) | func (s *stdSizes) Alignof(T types.Type) int64 {
method Offsetsof (line 68) | func (s *stdSizes) Offsetsof(fields []*types.Var) []int64 {
method Sizeof (line 96) | func (s *stdSizes) Sizeof(T types.Type) int64 {
function align (line 166) | func align(x, a int64) int64 {
FILE: compiler/symbol.go
type functionInfo (line 26) | type functionInfo struct
type inlineType (line 41) | type inlineType
constant inlineDefault (line 48) | inlineDefault inlineType = iota
constant inlineHint (line 53) | inlineHint
constant inlineNone (line 57) | inlineNone
constant allocKindAlloc (line 63) | allocKindAlloc = 1 << iota
constant allocKindRealloc (line 64) | allocKindRealloc
constant allocKindFree (line 65) | allocKindFree
constant allocKindUninitialized (line 66) | allocKindUninitialized
constant allocKindZeroed (line 67) | allocKindZeroed
constant allocKindAligned (line 68) | allocKindAligned
method getFunction (line 73) | func (c *compilerContext) getFunction(fn *ssa.Function) (llvm.Type, llvm...
method maybeCreateSyntheticFunction (line 255) | func (c *compilerContext) maybeCreateSyntheticFunction(fn *ssa.Function,...
method getFunctionInfo (line 296) | func (c *compilerContext) getFunctionInfo(f *ssa.Function) functionInfo {
method parsePragmas (line 331) | func (c *compilerContext) parsePragmas(info *functionInfo, f *ssa.Functi...
method checkWasmImportExport (line 482) | func (c *compilerContext) checkWasmImportExport(f *ssa.Function, pragma ...
method isValidWasmType (line 512) | func (c *compilerContext) isValidWasmType(typ types.Type, site wasmSite)...
type wasmSite (line 564) | type wasmSite
constant siteParam (line 567) | siteParam wasmSite = iota
constant siteResult (line 568) | siteResult
constant siteIndirect (line 569) | siteIndirect
function getParams (line 575) | func getParams(sig *types.Signature) []*types.Var {
method addStandardDeclaredAttributes (line 588) | func (c *compilerContext) addStandardDeclaredAttributes(llvmFn llvm.Valu...
method addStandardDefinedAttributes (line 615) | func (c *compilerContext) addStandardDefinedAttributes(llvmFn llvm.Value) {
method addStandardAttributes (line 631) | func (c *compilerContext) addStandardAttributes(llvmFn llvm.Value) {
type globalInfo (line 639) | type globalInfo struct
method parsePragmas (line 732) | func (info *globalInfo) parsePragmas(doc *ast.CommentGroup, c *compile...
method loadASTComments (line 648) | func (c *compilerContext) loadASTComments(pkg *loader.Package) {
method getGlobal (line 675) | func (c *compilerContext) getGlobal(g *ssa.Global) llvm.Value {
method getGlobalInfo (line 717) | func (c *compilerContext) getGlobalInfo(g *ssa.Global) globalInfo {
function getAllMethods (line 769) | func getAllMethods(prog *ssa.Program, typ types.Type) []*types.Selection {
function hasUnsafeImport (line 779) | func hasUnsafeImport(pkg *types.Package) bool {
FILE: compiler/syscall.go
method createRawSyscall (line 18) | func (b *builder) createRawSyscall(call *ssa.CallCommon) (llvm.Value, er...
method createSyscall (line 248) | func (b *builder) createSyscall(call *ssa.CallCommon) (llvm.Value, error) {
method createRawSyscallNoError (line 354) | func (b *builder) createRawSyscallNoError(call *ssa.CallCommon) (llvm.Va...
method createDarwinFuncPCABI0Call (line 378) | func (b *builder) createDarwinFuncPCABI0Call(instr *ssa.CallCommon) llvm...
FILE: compiler/testdata/basic.go
function addInt (line 5) | func addInt(x, y int) int {
function equalInt (line 9) | func equalInt(x, y int) bool {
function divInt (line 13) | func divInt(x, y int) int {
function divUint (line 17) | func divUint(x, y uint) uint {
function remInt (line 21) | func remInt(x, y int) int {
function remUint (line 25) | func remUint(x, y uint) uint {
function floatEQ (line 29) | func floatEQ(x, y float32) bool {
function floatNE (line 33) | func floatNE(x, y float32) bool {
function floatLower (line 37) | func floatLower(x, y float32) bool {
function floatLowerEqual (line 41) | func floatLowerEqual(x, y float32) bool {
function floatGreater (line 45) | func floatGreater(x, y float32) bool {
function floatGreaterEqual (line 49) | func floatGreaterEqual(x, y float32) bool {
function complexReal (line 53) | func complexReal(x complex64) float32 {
function complexImag (line 57) | func complexImag(x complex64) float32 {
function complexAdd (line 61) | func complexAdd(x, y complex64) complex64 {
function complexSub (line 65) | func complexSub(x, y complex64) complex64 {
function complexMul (line 69) | func complexMul(x, y complex64) complex64 {
type kv (line 77) | type kv struct
function foo (line 84) | func foo() {
type T1 (line 94) | type T1
type T2 (line 95) | type T2
FILE: compiler/testdata/channel.go
function chanIntSend (line 3) | func chanIntSend(ch chan int) {
function chanIntRecv (line 7) | func chanIntRecv(ch chan int) {
function chanZeroSend (line 11) | func chanZeroSend(ch chan struct{}) {
function chanZeroRecv (line 15) | func chanZeroRecv(ch chan struct{}) {
function selectZeroRecv (line 19) | func selectZeroRecv(ch1 chan int, ch2 chan struct{}) {
FILE: compiler/testdata/defer.go
function external (line 3) | func external()
function deferSimple (line 5) | func deferSimple() {
function deferMultiple (line 12) | func deferMultiple() {
function deferInfiniteLoop (line 22) | func deferInfiniteLoop() {
function deferLoop (line 28) | func deferLoop() {
function deferBetweenLoops (line 34) | func deferBetweenLoops() {
FILE: compiler/testdata/errors.go
function empty (line 9) | func empty()
function implementation (line 14) | func implementation() {
type Uint (line 17) | type Uint
type S (line 19) | type S struct
function validparam (line 28) | func validparam(a int32, b uint64, c float64, d unsafe.Pointer, e Uint, ...
function invalidparam (line 40) | func invalidparam(a [4]uint32, b []byte, c struct{ a int }, d chan struc...
function invalidparam_no_hostlayout (line 46) | func invalidparam_no_hostlayout(a *struct{ int }, b *struct{ string })
function validreturn_int32 (line 49) | func validreturn_int32() int32
function validreturn_ptr_int32 (line 52) | func validreturn_ptr_int32() *int32
function validreturn_ptr_string (line 55) | func validreturn_ptr_string() *string
function validreturn_ptr_struct (line 58) | func validreturn_ptr_struct() *S
function validreturn_ptr_empty_struct (line 61) | func validreturn_ptr_empty_struct() *struct{}
function validreturn_ptr_array (line 64) | func validreturn_ptr_array() *[8]uint8
function validreturn_unsafe_pointer (line 67) | func validreturn_unsafe_pointer() unsafe.Pointer
function manyreturns (line 72) | func manyreturns() (int32, int32)
function invalidreturn_int (line 77) | func invalidreturn_int() int
function invalidreturn_uint (line 82) | func invalidreturn_uint() uint
function invalidreturn_func (line 87) | func invalidreturn_func() func()
function invalidreturn_pointer_array_int (line 92) | func invalidreturn_pointer_array_int() *[8]int
function invalidreturn_slice_byte (line 97) | func invalidreturn_slice_byte() []byte
function invalidreturn_chan_int (line 102) | func invalidreturn_chan_int() chan int
function invalidreturn_string (line 107) | func invalidreturn_string() string
FILE: compiler/testdata/float.go
function f32tou32 (line 5) | func f32tou32(v float32) uint32 {
function maxu32f (line 9) | func maxu32f() float32 {
function maxu32tof32 (line 13) | func maxu32tof32() uint32 {
function inftoi32 (line 18) | func inftoi32() (uint32, uint32, int32, int32) {
function u32tof32tou32 (line 25) | func u32tof32tou32(v uint32) uint32 {
function f32tou32tof32 (line 29) | func f32tou32tof32(v float32) float32 {
function f32tou8 (line 33) | func f32tou8(v float32) uint8 {
function f32toi8 (line 37) | func f32toi8(v float32) int8 {
FILE: compiler/testdata/func.go
function foo (line 3) | func foo(callback func(int)) {
function bar (line 7) | func bar() {
function someFunc (line 11) | func someFunc(int) {
FILE: compiler/testdata/gc.go
function newScalar (line 33) | func newScalar() {
function newArray (line 40) | func newArray() {
function newStruct (line 46) | func newStruct() {
function newFuncValue (line 63) | func newFuncValue() *func() {
function makeSlice (line 67) | func makeSlice() {
function makeInterface (line 73) | func makeInterface(v complex128) interface{} {
FILE: compiler/testdata/generics.go
type Coord (line 5) | type Coord interface
type Point (line 9) | type Point struct
function Add (line 13) | func Add[T Coord](a, b Point[T]) Point[T] {
function main (line 22) | func main() {
function checkSize (line 30) | func checkSize(uintptr)
FILE: compiler/testdata/go1.20.go
function unsafeSliceData (line 5) | func unsafeSliceData(s []int) *int {
function unsafeString (line 9) | func unsafeString(ptr *byte, len int16) string {
function unsafeStringData (line 13) | func unsafeStringData(s string) *byte {
FILE: compiler/testdata/go1.21.go
function min1 (line 3) | func min1(a int) int {
function min2 (line 7) | func min2(a, b int) int {
function min3 (line 11) | func min3(a, b, c int) int {
function min4 (line 15) | func min4(a, b, c, d int) int {
function minUint8 (line 19) | func minUint8(a, b uint8) uint8 {
function minUnsigned (line 23) | func minUnsigned(a, b uint) uint {
function minFloat32 (line 27) | func minFloat32(a, b float32) float32 {
function minFloat64 (line 31) | func minFloat64(a, b float64) float64 {
function minString (line 35) | func minString(a, b string) string {
function maxInt (line 39) | func maxInt(a, b int) int {
function maxUint (line 43) | func maxUint(a, b uint) uint {
function maxFloat32 (line 47) | func maxFloat32(a, b float32) float32 {
function maxString (line 51) | func maxString(a, b string) string {
function clearSlice (line 55) | func clearSlice(s []int) {
function clearZeroSizedSlice (line 59) | func clearZeroSizedSlice(s []struct{}) {
function clearMap (line 63) | func clearMap(m map[string]int) {
FILE: compiler/testdata/goroutine.go
function regularFunctionGoroutine (line 3) | func regularFunctionGoroutine() {
function inlineFunctionGoroutine (line 7) | func inlineFunctionGoroutine() {
function closureFunctionGoroutine (line 12) | func closureFunctionGoroutine() {
function funcGoroutine (line 20) | func funcGoroutine(fn func(x int)) {
function recoverBuiltinGoroutine (line 24) | func recoverBuiltinGoroutine() {
function copyBuiltinGoroutine (line 29) | func copyBuiltinGoroutine(dst, src []byte) {
function closeBuiltinGoroutine (line 37) | func closeBuiltinGoroutine(ch chan int) {
function regularFunction (line 43) | func regularFunction(x int)
type simpleInterface (line 45) | type simpleInterface interface
function startInterfaceMethod (line 49) | func startInterfaceMethod(itf simpleInterface) {
FILE: compiler/testdata/interface.go
function simpleType (line 7) | func simpleType() interface{} {
function pointerType (line 11) | func pointerType() interface{} {
function interfaceType (line 17) | func interfaceType() interface{} {
function anonymousInterfaceType (line 24) | func anonymousInterfaceType() interface{} {
function isInt (line 33) | func isInt(itf interface{}) bool {
function isError (line 38) | func isError(itf interface{}) bool {
function isStringer (line 44) | func isStringer(itf interface{}) bool {
type fooInterface (line 52) | type fooInterface interface
function callFooMethod (line 57) | func callFooMethod(itf fooInterface) uint8 {
function callErrorMethod (line 61) | func callErrorMethod(itf error) string {
FILE: compiler/testdata/pointer.go
function pointerDerefZero (line 10) | func pointerDerefZero(x *[0]int) [0]int {
function pointerCastFromUnsafe (line 16) | func pointerCastFromUnsafe(x unsafe.Pointer) *int {
function pointerCastToUnsafe (line 20) | func pointerCastToUnsafe(x *int) unsafe.Pointer {
function pointerCastToUnsafeNoop (line 24) | func pointerCastToUnsafeNoop(x *byte) unsafe.Pointer {
FILE: compiler/testdata/pragma.go
function externFunc (line 24) | func externFunc() {
function withLinkageName1 (line 30) | func withLinkageName1() {
function withLinkageName2 (line 36) | func withLinkageName2()
function inlineFunc (line 41) | func inlineFunc() {
function noinlineFunc (line 48) | func noinlineFunc() {
type Int (line 51) | type Int interface
function noinlineGenericFunc (line 59) | func noinlineGenericFunc[T Int]() {
function useGeneric (line 62) | func useGeneric() {
function functionInSection (line 70) | func functionInSection() {
function exportedFunctionInSection (line 75) | func exportedFunctionInSection() {
function declaredImport (line 79) | func declaredImport()
function foobarImport (line 85) | func foobarImport()
function foobarExportModule (line 91) | func foobarExportModule() {
function undefinedFunctionNotInSection (line 97) | func undefinedFunctionNotInSection()
function doesNotEscapeParam (line 111) | func doesNotEscapeParam(a *int, b []int, c chan int, d *[0]byte)
function stillEscapes (line 116) | func stillEscapes(a *int, b []int, c chan int, d *[0]byte) {
FILE: compiler/testdata/slice.go
function sliceLen (line 5) | func sliceLen(ints []int) int {
function sliceCap (line 9) | func sliceCap(ints []int) int {
function sliceElement (line 13) | func sliceElement(ints []int, index int) int {
function sliceAppendValues (line 17) | func sliceAppendValues(ints []int) []int {
function sliceAppendSlice (line 21) | func sliceAppendSlice(ints, added []int) []int {
function sliceCopy (line 25) | func sliceCopy(dst, src []int) int {
function makeByteSlice (line 31) | func makeByteSlice(len int) []byte {
function makeInt16Slice (line 35) | func makeInt16Slice(len int) []int16 {
function makeArraySlice (line 39) | func makeArraySlice(len int) [][3]byte {
function makeInt32Slice (line 43) | func makeInt32Slice(len int) []int32 {
function Add32 (line 47) | func Add32(p unsafe.Pointer, len int) unsafe.Pointer {
function Add64 (line 51) | func Add64(p unsafe.Pointer, len int64) unsafe.Pointer {
function SliceToArray (line 55) | func SliceToArray(s []int) *[4]int {
function SliceToArrayConst (line 59) | func SliceToArrayConst() *[4]int {
function SliceInt (line 64) | func SliceInt(ptr *int, len int) []int {
function SliceUint16 (line 68) | func SliceUint16(ptr *byte, len uint16) []byte {
function SliceUint64 (line 72) | func SliceUint64(ptr *int, len uint64) []int {
function SliceInt64 (line 76) | func SliceInt64(ptr *int, len int64) []int {
FILE: compiler/testdata/string.go
function someString (line 3) | func someString() string {
function zeroLengthString (line 7) | func zeroLengthString() string {
function stringLen (line 11) | func stringLen(s string) int {
function stringIndex (line 15) | func stringIndex(s string, index int) byte {
function stringCompareEqual (line 19) | func stringCompareEqual(s1, s2 string) bool {
function stringCompareUnequal (line 23) | func stringCompareUnequal(s1, s2 string) bool {
function stringCompareLarger (line 27) | func stringCompareLarger(s1, s2 string) bool {
function stringLookup (line 31) | func stringLookup(s string, x uint8) byte {
FILE: compiler/testdata/zeromap.go
type hasPadding (line 3) | type hasPadding struct
type nestedPadding (line 9) | type nestedPadding struct
function testZeroGet (line 16) | func testZeroGet(m map[hasPadding]int, s hasPadding) int {
function testZeroSet (line 21) | func testZeroSet(m map[hasPadding]int, s hasPadding) {
function testZeroArrayGet (line 26) | func testZeroArrayGet(m map[[2]hasPadding]int, s [2]hasPadding) int {
function testZeroArraySet (line 31) | func testZeroArraySet(m map[[2]hasPadding]int, s [2]hasPadding) {
function main (line 35) | func main() {
FILE: compiler/volatile.go
method createVolatileLoad (line 10) | func (b *builder) createVolatileLoad() {
method createVolatileStore (line 22) | func (b *builder) createVolatileStore() {
FILE: corpus_test.go
function TestCorpus (line 44) | func TestCorpus(t *testing.T) {
type T (line 153) | type T struct
type Subdir (line 162) | type Subdir struct
function loadRepos (line 168) | func loadRepos(f string) ([]T, error) {
FILE: diagnostics/diagnostics.go
type Diagnostic (line 24) | type Diagnostic struct
method WriteTo (line 202) | func (diag Diagnostic) WriteTo(w io.Writer, wd string) {
type PackageDiagnostic (line 37) | type PackageDiagnostic struct
method WriteTo (line 191) | func (pkgDiag PackageDiagnostic) WriteTo(w io.Writer, wd string) {
type ProgramDiagnostic (line 44) | type ProgramDiagnostic
method WriteTo (line 183) | func (progDiag ProgramDiagnostic) WriteTo(w io.Writer, wd string) {
function CreateDiagnostics (line 48) | func CreateDiagnostics(err error) ProgramDiagnostic {
function createPackageDiagnostic (line 61) | func createPackageDiagnostic(err error) PackageDiagnostic {
function createDiagnostics (line 120) | func createDiagnostics(err error) []Diagnostic {
function RelativePosition (line 214) | func RelativePosition(pos token.Position, wd string) token.Position {
FILE: diff.go
type pair (line 16) | type pair struct
function Diff (line 46) | func Diff(oldName string, old []byte, newName string, new []byte) []byte {
function lines (line 169) | func lines(x []byte) []string {
function tgs (line 189) | func tgs(x, y []string) []pair {
FILE: errors_test.go
function TestErrors (line 17) | func TestErrors(t *testing.T) {
function testErrorMessages (line 60) | func testErrorMessages(t *testing.T, filename string, options *compileop...
function matchErrors (line 94) | func matchErrors(t *testing.T, pattern, actual string) bool {
function indentText (line 126) | func indentText(text, indent string) string {
function readErrorMessages (line 131) | func readErrorMessages(t *testing.T, file string) string {
FILE: goenv/goenv.go
function init (line 32) | func init() {
function readGoEnvVars (line 67) | func readGoEnvVars() error {
function Get (line 104) | func Get(name string) string {
function findWasmOpt (line 183) | func findWasmOpt() string {
function wasmOptCheckVersion (line 231) | func wasmOptCheckVersion(path string) error {
function sourceDir (line 258) | func sourceDir() string {
function isSourceDir (line 302) | func isSourceDir(root string) bool {
function ClangResourceDir (line 318) | func ClangResourceDir(libclang bool) string {
function findSystemClangResources (line 369) | func findSystemClangResources(TINYGOROOT string) string {
FILE: goenv/tools-builtin.go
function init (line 5) | func init() {
FILE: goenv/version.go
constant version (line 13) | version = "0.40.1"
function Version (line 17) | func Version() string {
function readGitHash (line 27) | func readGitHash() string {
function GetGorootVersion (line 40) | func GetGorootVersion() (major, minor int, err error) {
function Parse (line 52) | func Parse(version string) (major, minor, patch int, err error) {
function Compare (line 87) | func Compare(a, b string) int {
function GorootVersionString (line 111) | func GorootVersionString() (string, error) {
FILE: goenv/version_test.go
function TestParse (line 5) | func TestParse(t *testing.T) {
function TestCompare (line 43) | func TestCompare(t *testing.T) {
FILE: interp/compiler.go
type function (line 17) | type function struct
type basicBlock (line 27) | type basicBlock struct
type instruction (line 37) | type instruction struct
method String (line 46) | func (inst *instruction) String() string {
method compileFunction (line 65) | func (r *runner) compileFunction(llvmFn llvm.Value) *function {
FILE: interp/errors.go
function isRecoverableError (line 29) | func isRecoverableError(err error) bool {
type ErrorLine (line 36) | type ErrorLine struct
type Error (line 43) | type Error struct
method Error (line 52) | func (e *Error) Error() string {
method errorAt (line 59) | func (r *runner) errorAt(inst instruction, err error) *Error {
function errorAt (line 73) | func errorAt(inst llvm.Value, msg string) scanner.Error {
function getPosition (line 82) | func getPosition(inst llvm.Value) token.Position {
FILE: interp/interp.go
constant checks (line 18) | checks = true
type runner (line 21) | type runner struct
method dispose (line 60) | func (r *runner) dispose() {
method getFunction (line 292) | func (r *runner) getFunction(llvmFn llvm.Value) *function {
method markExternalLoad (line 307) | func (r *runner) markExternalLoad(llvmValue llvm.Value) error {
function newRunner (line 40) | func newRunner(mod llvm.Module, timeout time.Duration, debug bool) *runn...
function Run (line 67) | func Run(mod llvm.Module, timeout time.Duration, debug bool) error {
function RunFunc (line 207) | func RunFunc(fn llvm.Value, timeout time.Duration, debug bool) error {
FILE: interp/interp_test.go
function TestInterp (line 13) | func TestInterp(t *testing.T) {
function runTest (line 40) | func runTest(t *testing.T, pathPrefix string) {
function fuzzyEqualIR (line 102) | func fuzzyEqualIR(s1, s2 string) bool {
function filterIrrelevantIRLines (line 121) | func filterIrrelevantIRLines(lines []string) []string {
FILE: interp/interpreter.go
method run (line 15) | func (r *runner) run(fn *function, params []value, parentMem *memoryView...
method interpretICmp (line 921) | func (r *runner) interpretICmp(lhs, rhs value, predicate llvm.IntPredica...
method runAtRuntime (line 964) | func (r *runner) runAtRuntime(fn *function, inst instruction, locals []v...
function intPredicateString (line 1077) | func intPredicateString(predicate llvm.IntPredicate) string {
FILE: interp/memory.go
type object (line 38) | type object struct
method clone (line 52) | func (obj object) clone() object {
type memoryView (line 64) | type memoryView struct
method extend (line 79) | func (mv *memoryView) extend(sub memoryView) {
method revert (line 91) | func (mv *memoryView) revert() {
method markExternalLoad (line 109) | func (mv *memoryView) markExternalLoad(llvmValue llvm.Value) error {
method markExternalStore (line 117) | func (mv *memoryView) markExternalStore(llvmValue llvm.Value) error {
method markExternal (line 123) | func (mv *memoryView) markExternal(llvmValue llvm.Value, mark uint8) e...
method hasExternalLoadOrStore (line 244) | func (mv *memoryView) hasExternalLoadOrStore(v pointerValue) bool {
method hasExternalStore (line 253) | func (mv *memoryView) hasExternalStore(v pointerValue) bool {
method get (line 260) | func (mv *memoryView) get(index uint32) object {
method getWritable (line 271) | func (mv *memoryView) getWritable(index uint32) object {
method put (line 285) | func (mv *memoryView) put(index uint32, obj object) {
method load (line 303) | func (mv *memoryView) load(p pointerValue, size uint32) value {
method store (line 329) | func (mv *memoryView) store(v value, p pointerValue) bool {
type value (line 359) | type value interface
type literalValue (line 373) | type literalValue struct
method len (line 393) | func (v literalValue) len(r *runner) uint32 {
method String (line 408) | func (v literalValue) String() string {
method clone (line 413) | func (v literalValue) clone() value {
method asPointer (line 417) | func (v literalValue) asPointer(r *runner) (pointerValue, error) {
method asRawValue (line 421) | func (v literalValue) asRawValue(r *runner) rawValue {
method Uint (line 445) | func (v literalValue) Uint(r *runner) uint64 {
method Int (line 460) | func (v literalValue) Int(r *runner) int64 {
method toLLVMValue (line 475) | func (v literalValue) toLLVMValue(llvmType llvm.Type, mem *memoryView)...
function makeLiteralInt (line 378) | func makeLiteralInt(value uint64, bits int) literalValue {
type pointerValue (line 501) | type pointerValue struct
method index (line 511) | func (v pointerValue) index() uint32 {
method offset (line 515) | func (v pointerValue) offset() uint32 {
method addOffset (line 522) | func (v pointerValue) addOffset(offset int64) (pointerValue, error) {
method len (line 530) | func (v pointerValue) len(r *runner) uint32 {
method String (line 534) | func (v pointerValue) String() string {
method clone (line 542) | func (v pointerValue) clone() value {
method asPointer (line 546) | func (v pointerValue) asPointer(r *runner) (pointerValue, error) {
method asRawValue (line 550) | func (v pointerValue) asRawValue(r *runner) rawValue {
method Uint (line 558) | func (v pointerValue) Uint(r *runner) uint64 {
method Int (line 562) | func (v pointerValue) Int(r *runner) int64 {
method equal (line 566) | func (v pointerValue) equal(rhs pointerValue) bool {
method llvmValue (line 570) | func (v pointerValue) llvmValue(mem *memoryView) llvm.Value {
method toLLVMValue (line 577) | func (v pointerValue) toLLVMValue(llvmType llvm.Type, mem *memoryView)...
function newPointerValue (line 505) | func newPointerValue(r *runner, index, offset int) pointerValue {
type rawValue (line 676) | type rawValue struct
method len (line 688) | func (v rawValue) len(r *runner) uint32 {
method String (line 692) | func (v rawValue) String() string {
method clone (line 720) | func (v rawValue) clone() value {
method asPointer (line 727) | func (v rawValue) asPointer(r *runner) (pointerValue, error) {
method asRawValue (line 735) | func (v rawValue) asRawValue(r *runner) rawValue {
method bytes (line 739) | func (v rawValue) bytes() []byte {
method Uint (line 750) | func (v rawValue) Uint(r *runner) uint64 {
method Int (line 767) | func (v rawValue) Int(r *runner) int64 {
method equal (line 783) | func (v rawValue) equal(rhs rawValue) bool {
method rawLLVMValue (line 799) | func (v rawValue) rawLLVMValue(mem *memoryView) (llvm.Value, error) {
method toLLVMValue (line 844) | func (v rawValue) toLLVMValue(llvmType llvm.Type, mem *memoryView) (ll...
method set (line 980) | func (v *rawValue) set(llvmValue llvm.Value, r *runner) {
method hasPointer (line 1131) | func (v rawValue) hasPointer() bool {
function newRawValue (line 684) | func newRawValue(size uint32) rawValue {
type localValue (line 1143) | type localValue struct
method len (line 1147) | func (v localValue) len(r *runner) uint32 {
method String (line 1151) | func (v localValue) String() string {
method clone (line 1155) | func (v localValue) clone() value {
method asPointer (line 1159) | func (v localValue) asPointer(r *runner) (pointerValue, error) {
method asRawValue (line 1163) | func (v localValue) asRawValue(r *runner) rawValue {
method Uint (line 1167) | func (v localValue) Uint(r *runner) uint64 {
method Int (line 1171) | func (v localValue) Int(r *runner) int64 {
method toLLVMValue (line 1175) | func (v localValue) toLLVMValue(llvmType llvm.Type, mem *memoryView) (...
method getValue (line 1179) | func (r *runner) getValue(llvmValue llvm.Value) value {
method readObjectLayout (line 1244) | func (r *runner) readObjectLayout(layoutValue value) (uint64, *big.Int) {
method getLLVMTypeFromLayout (line 1305) | func (r *runner) getLLVMTypeFromLayout(layoutValue value) llvm.Type {
function reverseBytes (line 1350) | func reverseBytes(buf []byte) {
FILE: loader/errors.go
type Errors (line 7) | type Errors struct
method Error (line 12) | func (e Errors) Error() string {
type Error (line 18) | type Error struct
method Error (line 23) | func (e Error) Error() string {
type NoTestFilesError (line 29) | type NoTestFilesError struct
method Error (line 33) | func (e NoTestFilesError) Error() string {
FILE: loader/goroot.go
function GetCachedGoroot (line 37) | func GetCachedGoroot(config *compileopts.Config) (string, error) {
function listGorootMergeLinks (line 146) | func listGorootMergeLinks(goroot, tinygoroot string, overrides map[strin...
function needsSyscallPackage (line 219) | func needsSyscallPackage(buildTags []string) bool {
function pathsToOverride (line 230) | func pathsToOverride(goMinor int, needsSyscallPackage bool) map[string]b...
function symlink (line 288) | func symlink(oldname, newname string) error {
FILE: loader/list.go
function List (line 15) | func List(config *compileopts.Config, extraArgs, pkgs []string) (*exec.C...
FILE: loader/loader.go
type Program (line 33) | type Program struct
method getOriginalPath (line 271) | func (p *Program) getOriginalPath(path string) string {
method Sorted (line 303) | func (p *Program) Sorted() []*Package {
method MainPkg (line 309) | func (p *Program) MainPkg() *Package {
method Parse (line 318) | func (p *Program) Parse() error {
type PackageJSON (line 48) | type PackageJSON struct
type Package (line 83) | type Package struct
method OriginalDir (line 341) | func (p *Package) OriginalDir() string {
method parseFile (line 346) | func (p *Package) parseFile(path string, mode parser.Mode) (*ast.File,...
method Parse (line 360) | func (p *Package) Parse() error {
method Check (line 386) | func (p *Package) Check() error {
method parseFiles (line 456) | func (p *Package) parseFiles() ([]*ast.File, error) {
method extractEmbedLines (line 512) | func (p *Package) extractEmbedLines(addError func(error)) {
method parseGoEmbed (line 683) | func (p *Package) parseGoEmbed(args string, pos token.Pos) (patterns [...
method Import (line 755) | func (p *Package) Import(to string) (*types.Package, error) {
type EmbedFile (line 96) | type EmbedFile struct
function Load (line 107) | func Load(config *compileopts.Config, inputPkg string, typeChecker types...
function matchPattern (line 647) | func matchPattern(pattern, name string) bool {
function isValidEmbedType (line 735) | func isValidEmbedType(typ types.Type) (valid, byteSlice bool) {
FILE: loader/loader_go122.go
function init (line 13) | func init() {
FILE: loader/ssa.go
method LoadSSA (line 10) | func (p *Program) LoadSSA() *ssa.Program {
method LoadSSA (line 25) | func (p *Package) LoadSSA() *ssa.Package {
FILE: main.go
type commandError (line 43) | type commandError struct
method Error (line 49) | func (e *commandError) Error() string {
function moveFile (line 56) | func moveFile(src, dst string) error {
function copyFile (line 73) | func copyFile(src, dst string) error {
function executeCommand (line 114) | func executeCommand(options *compileopts.Options, name string, arg ...st...
function printCommand (line 126) | func printCommand(cmd string, args ...string) {
function Build (line 141) | func Build(pkgName, outpath string, config *compileopts.Config) error {
function Test (line 203) | func Test(pkgName string, stdout, stderr io.Writer, options *compileopts...
function dirsToModuleRootRel (line 316) | func dirsToModuleRootRel(maindir, modroot string) []string {
function dirsToModuleRootAbs (line 330) | func dirsToModuleRootAbs(maindir, modroot string) []string {
function validateOutputFormat (line 344) | func validateOutputFormat(outpath, expectedExt string) error {
function Flash (line 353) | func Flash(pkgName, port, outpath string, options *compileopts.Options) ...
function Debug (line 538) | func Debug(debugger, pkgName string, ocdOutput bool, options *compileopt...
function Run (line 762) | func Run(pkgName string, options *compileopts.Options, cmdArgs []string)...
function buildAndRun (line 778) | func buildAndRun(pkgName string, config *compileopts.Config, stdout io.W...
function touchSerialPortAt1200bps (line 950) | func touchSerialPortAt1200bps(port string) (err error) {
function flashUF2UsingMSD (line 975) | func flashUF2UsingMSD(volumes []string, tmppath string, options *compile...
function flashHexUsingMSD (line 1001) | func flashHexUsingMSD(volumes []string, tmppath string, options *compile...
type mountPoint (line 1022) | type mountPoint struct
function findFATMounts (line 1028) | func findFATMounts(options *compileopts.Options) ([]mountPoint, error) {
function getDefaultPort (line 1139) | func getDefaultPort(portFlag string, usbInterfaces []string) (port strin...
function getBMPPorts (line 1248) | func getBMPPorts() (gdbPort, uartPort string, err error) {
constant usageBuild (line 1277) | usageBuild = `Build compiles the packages named by the import paths, alo...
constant usageRun (line 1309) | usageRun = `Run the program, either directly on the host or in an emulat...
constant usageFlash (line 1312) | usageFlash = `Flash the program to a microcontroller. Some common flags ...
constant usageMonitor (line 1334) | usageMonitor = `Start the serial monitor on the serial port that is conn...
constant usageGdb (line 1376) | usageGdb = `Build the program, optionally flash it to a microcontroller ...
constant usageClean (line 1386) | usageClean = `Clean the cache directory, normally stored in $HOME/.cache...
constant usageHelp (line 1389) | usageHelp = `Print a short summary of the available commands, plus a ...
constant usageVersion (line 1390) | usageVersion = `Print the version of the command and the version of the ...
constant usageEnv (line 1391) | usageEnv = `Print a list of environment variables that affect TinyGo...
constant usageDefault (line 1395) | usageDefault = `TinyGo is a Go compiler for small places.
function usage (line 1430) | func usage(command string) {
function printBuildOutput (line 1447) | func printBuildOutput(err error, jsonDiagnostics bool) {
function handleCompilerError (line 1508) | func handleCompilerError(err error) {
type globalValuesFlag (line 1522) | type globalValuesFlag
method String (line 1524) | func (m globalValuesFlag) String() string {
method Set (line 1528) | func (m globalValuesFlag) Set(value string) error {
function parseGoLinkFlag (line 1550) | func parseGoLinkFlag(flagsString string) (map[string]map[string]string, ...
function getListOfPackages (line 1569) | func getListOfPackages(pkgs []string, options *compileopts.Options) ([]s...
function main (line 1595) | func main() {
type testOutputBuf (line 2078) | type testOutputBuf struct
method flush (line 2088) | func (b *testOutputBuf) flush(stdout, stderr io.Writer) error {
type testStdout (line 2125) | type testStdout
method Write (line 2127) | func (out *testStdout) Write(data []byte) (int, error) {
type testStderr (line 2156) | type testStderr
method Write (line 2158) | func (out *testStderr) Write(data []byte) (int, error) {
type outputEntry (line 2186) | type outputEntry struct
function handleChdirFlag (line 2204) | func handleChdirFlag() {
function slicesDelete (line 2234) | func slicesDelete[S ~[]E, E any](s S, i, j int) S {
FILE: main_test.go
constant TESTDATA (line 34) | TESTDATA = "testdata"
function init (line 49) | func init() {
function TestBuild (line 60) | func TestBuild(t *testing.T) {
function runPlatTests (line 237) | func runPlatTests(options compileopts.Options, tests []string, t *testin...
function emuCheck (line 363) | func emuCheck(t *testing.T, options compileopts.Options) {
function optionsFromTarget (line 383) | func optionsFromTarget(target string, sema chan struct{}) compileopts.Op...
function optionsFromOSARCH (line 406) | func optionsFromOSARCH(osarch string, sema chan struct{}) compileopts.Op...
function runTest (line 426) | func runTest(name string, options compileopts.Options, t *testing.T, cmd...
function runTestWithConfig (line 431) | func runTestWithConfig(name string, t *testing.T, options compileopts.Op...
function TestWebAssembly (line 503) | func TestWebAssembly(t *testing.T) {
function stringSlicesEqual (line 561) | func stringSlicesEqual(s1, s2 []string) bool {
function TestWasmExport (line 575) | func TestWasmExport(t *testing.T) {
function TestWasmFuncOf (line 771) | func TestWasmFuncOf(t *testing.T) {
function TestWasmExportJS (line 797) | func TestWasmExportJS(t *testing.T) {
function TestWasmExit (line 841) | func TestWasmExit(t *testing.T) {
function checkOutput (line 880) | func checkOutput(t *testing.T, filename string, actual []byte) {
function checkOutputData (line 889) | func checkOutputData(t *testing.T, expectedOutput, actual []byte) {
function TestTest (line 900) | func TestTest(t *testing.T) {
function ioLogger (line 1034) | func ioLogger(t *testing.T, wg *sync.WaitGroup) io.WriteCloser {
function TestGetListOfPackages (line 1050) | func TestGetListOfPackages(t *testing.T) {
function TestMain (line 1093) | func TestMain(m *testing.M) {
FILE: monitor.go
function Monitor (line 29) | func Monitor(executable, port string, config *compileopts.Config) error {
type SerialPortInfo (line 230) | type SerialPortInfo struct
function ListSerialPorts (line 241) | func ListSerialPorts() ([]SerialPortInfo, error) {
function extractPanicAddress (line 284) | func extractPanicAddress(line []byte) uint64 {
function addressToLine (line 296) | func addressToLine(executable string, address uint64) (token.Position, e...
function readDWARF (line 371) | func readDWARF(executable string) (*dwarf.Data, error) {
type outputWriter (line 387) | type outputWriter struct
method Write (line 403) | func (w *outputWriter) Write(p []byte) (n int, err error) {
function newOutputWriter (line 396) | func newOutputWriter(out io.Writer, executable string) *outputWriter {
FILE: monitor_test.go
function TestTraceback (line 15) | func TestTraceback(t *testing.T) {
FILE: src/crypto/internal/boring/sig/sig_other.go
function BoringCrypto (line 5) | func BoringCrypto() {
function FIPSOnly (line 10) | func FIPSOnly() {
function StandardCrypto (line 15) | func StandardCrypto() {
FILE: src/crypto/rand/rand.go
function Read (line 17) | func Read(b []byte) (n int, err error) {
FILE: src/crypto/rand/rand_arc4random.go
function init (line 14) | func init() {
type reader (line 18) | type reader struct
method Read (line 21) | func (r *reader) Read(b []byte) (n int, err error) {
function libc_arc4random_buf (line 31) | func libc_arc4random_buf(buf unsafe.Pointer, buflen uint)
FILE: src/crypto/rand/rand_baremetal.go
function init (line 12) | func init() {
type reader (line 16) | type reader struct
method Read (line 19) | func (r *reader) Read(b []byte) (n int, err error) {
FILE: src/crypto/rand/rand_urandom.go
function init (line 14) | func init() {
type reader (line 18) | type reader struct
method Read (line 22) | func (r *reader) Read(b []byte) (n int, err error) {
FILE: src/crypto/rand/rand_windows.go
function init (line 8) | func init() {
type reader (line 12) | type reader struct
method Read (line 17) | func (r *reader) Read(b []byte) (n int, err error) {
function libc_RtlGenRandom (line 40) | func libc_RtlGenRandom(buf unsafe.Pointer, len int) bool
FILE: src/crypto/rand/util.go
function Prime (line 31) | func Prime(rand io.Reader, bits int) (p *big.Int, err error) {
function Int (line 106) | func Int(rand io.Reader, max *big.Int) (n *big.Int, err error) {
FILE: src/crypto/tls/common.go
constant VersionTLS10 (line 21) | VersionTLS10 = 0x0301
constant VersionTLS11 (line 22) | VersionTLS11 = 0x0302
constant VersionTLS12 (line 23) | VersionTLS12 = 0x0303
constant VersionTLS13 (line 24) | VersionTLS13 = 0x0304
constant VersionSSL30 (line 28) | VersionSSL30 = 0x0300
function VersionName (line 34) | func VersionName(version uint16) string {
type CurveID (line 56) | type CurveID
function CipherSuiteName (line 61) | func CipherSuiteName(id uint16) string {
type ConnectionState (line 66) | type ConnectionState struct
type ClientAuthType (line 77) | type ClientAuthType
type ClientSessionCache (line 85) | type ClientSessionCache interface
type SignatureScheme (line 101) | type SignatureScheme
type ClientHelloInfo (line 105) | type ClientHelloInfo struct
type CertificateRequestInfo (line 160) | type CertificateRequestInfo struct
type RenegotiationSupport (line 192) | type RenegotiationSupport
type Config (line 198) | type Config struct
type ticketKey (line 463) | type ticketKey struct
type Certificate (line 471) | type Certificate struct
FILE: src/crypto/tls/ticket.go
type SessionState (line 8) | type SessionState struct
type ClientSessionState (line 13) | type ClientSessionState struct
FILE: src/crypto/tls/tls.go
function Client (line 27) | func Client(conn net.Conn, config *Config) *net.TLSConn {
type listener (line 33) | type listener struct
function NewListener (line 42) | func NewListener(inner net.Listener, config *Config) net.Listener {
function DialWithDialer (line 59) | func DialWithDialer(dialer *net.Dialer, network, addr string, config *Co...
function Dial (line 75) | func Dial(network, addr string, config *Config) (*net.TLSConn, error) {
type Dialer (line 81) | type Dialer struct
method DialContext (line 103) | func (d *Dialer) DialContext(ctx context.Context, network, addr string...
function LoadX509KeyPair (line 118) | func LoadX509KeyPair(certFile, keyFile string) (Certificate, error) {
FILE: src/crypto/x509/internal/macos/macos.go
constant ErrSecCertificateExpired (line 12) | ErrSecCertificateExpired = -67818
constant ErrSecHostNameMismatch (line 13) | ErrSecHostNameMismatch = -67602
constant ErrSecNotTrusted (line 14) | ErrSecNotTrusted = -67843
function CFArrayAppendValue (line 24) | func CFArrayAppendValue(array CFRef, val CFRef) {}
function CFArrayGetCount (line 26) | func CFArrayGetCount(array CFRef) int {
function CFDataGetBytePtr (line 30) | func CFDataGetBytePtr(data CFRef) uintptr {
function CFDataGetLength (line 34) | func CFDataGetLength(data CFRef) int {
function CFDataToSlice (line 38) | func CFDataToSlice(data CFRef) []byte {
function CFEqual (line 42) | func CFEqual(a, b CFRef) bool {
function CFErrorGetCode (line 46) | func CFErrorGetCode(errRef CFRef) int {
function CFNumberGetValue (line 50) | func CFNumberGetValue(num CFRef) (int32, error) {
function CFRelease (line 54) | func CFRelease(ref CFRef) {}
function CFStringToString (line 56) | func CFStringToString(ref CFRef) string {
function ReleaseCFArray (line 60) | func ReleaseCFArray(array CFRef) {}
function SecCertificateCopyData (line 62) | func SecCertificateCopyData(cert CFRef) ([]byte, error) {
function SecTrustCopyCertificateChain (line 66) | func SecTrustCopyCertificateChain(trustObj CFRef) (CFRef, error) {
function SecTrustEvaluateWithError (line 70) | func SecTrustEvaluateWithError(trustObj CFRef) (int, error) {
function SecTrustGetCertificateCount (line 74) | func SecTrustGetCertificateCount(trustObj CFRef) int {
function SecTrustGetResult (line 78) | func SecTrustGetResult(trustObj CFRef, result CFRef) (CFRef, CFRef, erro...
function SecTrustSetVerifyDate (line 82) | func SecTrustSetVerifyDate(trustObj CFRef, dateRef CFRef) error {
type CFRef (line 86) | type CFRef
function BytesToCFData (line 88) | func BytesToCFData(b []byte) CFRef {
function CFArrayCreateMutable (line 92) | func CFArrayCreateMutable() CFRef {
function CFArrayGetValueAtIndex (line 96) | func CFArrayGetValueAtIndex(array CFRef, index int) CFRef {
function CFDateCreate (line 100) | func CFDateCreate(seconds float64) CFRef {
function CFDictionaryGetValueIfPresent (line 104) | func CFDictionaryGetValueIfPresent(dict CFRef, key CFString) (value CFRe...
function CFErrorCopyDescription (line 108) | func CFErrorCopyDescription(errRef CFRef) CFRef {
function CFStringCreateExternalRepresentation (line 112) | func CFStringCreateExternalRepresentation(strRef CFRef) (CFRef, error) {
function SecCertificateCreateWithData (line 116) | func SecCertificateCreateWithData(b []byte) (CFRef, error) {
function SecPolicyCreateSSL (line 120) | func SecPolicyCreateSSL(name string) (CFRef, error) {
function SecTrustCreateWithCertificates (line 124) | func SecTrustCreateWithCertificates(certs CFRef, policies CFRef) (CFRef,...
function SecTrustEvaluate (line 128) | func SecTrustEvaluate(trustObj CFRef) (CFRef, error) {
function SecTrustGetCertificateAtIndex (line 132) | func SecTrustGetCertificateAtIndex(trustObj CFRef, i int) (CFRef, error) {
function SecTrustSettingsCopyCertificates (line 136) | func SecTrustSettingsCopyCertificates(domain SecTrustSettingsDomain) (ce...
function SecTrustSettingsCopyTrustSettings (line 140) | func SecTrustSettingsCopyTrustSettings(cert CFRef, domain SecTrustSettin...
function TimeToCFDateRef (line 144) | func TimeToCFDateRef(t time.Time) CFRef {
type CFString (line 148) | type CFString
function StringToCFString (line 150) | func StringToCFString(s string) CFString {
type OSStatus (line 154) | type OSStatus struct
method Error (line 158) | func (s OSStatus) Error() string
type SecTrustResultType (line 160) | type SecTrustResultType
constant SecTrustResultInvalid (line 163) | SecTrustResultInvalid SecTrustResultType = iota
constant SecTrustResultProceed (line 164) | SecTrustResultProceed
constant SecTrustResultConfirm (line 165) | SecTrustResultConfirm
constant SecTrustResultDeny (line 166) | SecTrustResultDeny
constant SecTrustResultUnspecified (line 167) | SecTrustResultUnspecified
constant SecTrustResultRecoverableTrustFailure (line 168) | SecTrustResultRecoverableTrustFailure
constant SecTrustResultFatalTrustFailure (line 169) | SecTrustResultFatalTrustFailure
constant SecTrustResultOtherError (line 170) | SecTrustResultOtherError
type SecTrustSettingsDomain (line 173) | type SecTrustSettingsDomain
constant SecTrustSettingsDomainUser (line 176) | SecTrustSettingsDomainUser SecTrustSettingsDomain = iota
constant SecTrustSettingsDomainAdmin (line 177) | SecTrustSettingsDomainAdmin
constant SecTrustSettingsDomainSystem (line 178) | SecTrustSettingsDomainSystem
type SecTrustSettingsResult (line 181) | type SecTrustSettingsResult
constant SecTrustSettingsResultInvalid (line 184) | SecTrustSettingsResultInvalid SecTrustSettingsResult = iota
constant SecTrustSettingsResultTrustRoot (line 185) | SecTrustSettingsResultTrustRoot
constant SecTrustSettingsResultTrustAsRoot (line 186) | SecTrustSettingsResultTrustAsRoot
constant SecTrustSettingsResultDeny (line 187) | SecTrustSettingsResultDeny
constant SecTrustSettingsResultUnspecified (line 188) | SecTrustSettingsResultUnspecified
FILE: src/device/arm/arm.go
function Asm (line 44) | func Asm(asm string)
function AsmFull (line 59) | func AsmFull(asm string, regs map[string]interface{}) uintptr
function SVCall0 (line 62) | func SVCall0(num uintptr) uintptr
function SVCall1 (line 65) | func SVCall1(num uintptr, a1 interface{}) uintptr
function SVCall2 (line 68) | func SVCall2(num uintptr, a1, a2 interface{}) uintptr
function SVCall3 (line 71) | func SVCall3(num uintptr, a1, a2, a3 interface{}) uintptr
function SVCall4 (line 74) | func SVCall4(num uintptr, a1, a2, a3, a4 interface{}) uintptr
constant SCS_BASE (line 77) | SCS_BASE = 0xE000E000
constant SYST_BASE (line 78) | SYST_BASE = SCS_BASE + 0x0010
constant NVIC_BASE (line 79) | NVIC_BASE = SCS_BASE + 0x0100
type NVIC_Type (line 86) | type NVIC_Type struct
type SYST_Type (line 105) | type SYST_Type struct
constant SYST_CSR_ENABLE_Pos (line 117) | SYST_CSR_ENABLE_Pos = 0x0
constant SYST_CSR_ENABLE_Msk (line 118) | SYST_CSR_ENABLE_Msk = 0x1
constant SYST_CSR_ENABLE (line 119) | SYST_CSR_ENABLE = 0x1
constant SYST_CSR_TICKINT_Pos (line 120) | SYST_CSR_TICKINT_Pos = 0x1
constant SYST_CSR_TICKINT_Msk (line 121) | SYST_CSR_TICKINT_Msk = 0x2
constant SYST_CSR_TICKINT (line 122) | SYST_CSR_TICKINT = 0x2
constant SYST_CSR_CLKSOURCE_Pos (line 123) | SYST_CSR_CLKSOURCE_Pos = 0x2
constant SYST_CSR_CLKSOURCE_Msk (line 124) | SYST_CSR_CLKSOURCE_Msk = 0x4
constant SYST_CSR_CLKSOURCE (line 125) | SYST_CSR_CLKSOURCE = 0x4
constant SYST_CSR_COUNTFLAG_Pos (line 126) | SYST_CSR_COUNTFLAG_Pos = 0x10
constant SYST_CSR_COUNTFLAG_Msk (line 127) | SYST_CSR_COUNTFLAG_Msk = 0x10000
constant SYST_CSR_COUNTFLAG (line 128) | SYST_CSR_COUNTFLAG = 0x10000
constant SYST_RVR_RELOAD_Pos (line 131) | SYST_RVR_RELOAD_Pos = 0x0
constant SYST_RVR_RELOAD_Msk (line 132) | SYST_RVR_RELOAD_Msk = 0xffffff
constant SYST_CVR_CURRENT_Pos (line 135) | SYST_CVR_CURRENT_Pos = 0x0
constant SYST_CVR_CURRENT_Msk (line 136) | SYST_CVR_CURRENT_Msk = 0xffffff
constant SYST_CALIB_TENMS_Pos (line 139) | SYST_CALIB_TENMS_Pos = 0x0
constant SYST_CALIB_TENMS_Msk (line 140) | SYST_CALIB_TENMS_Msk = 0xffffff
constant SYST_CALIB_SKEW_Pos (line 141) | SYST_CALIB_SKEW_Pos = 0x1e
constant SYST_CALIB_SKEW_Msk (line 142) | SYST_CALIB_SKEW_Msk = 0x40000000
constant SYST_CALIB_SKEW (line 143) | SYST_CALIB_SKEW = 0x40000000
constant SYST_CALIB_NOREF_Pos (line 144) | SYST_CALIB_NOREF_Pos = 0x1f
constant SYST_CALIB_NOREF_Msk (line 145) | SYST_CALIB_NOREF_Msk = 0x80000000
constant SYST_CALIB_NOREF (line 146) | SYST_CALIB_NOREF = 0x80000000
function ClearPendingIRQ (line 150) | func ClearPendingIRQ(irq uint32) {
function EnableIRQ (line 155) | func EnableIRQ(irq uint32) {
function DisableIRQ (line 160) | func DisableIRQ(irq uint32) {
function SetPriority (line 171) | func SetPriority(irq uint32, priority uint32) {
function DisableInterrupts (line 185) | func DisableInterrupts() uintptr
function EnableInterrupts (line 191) | func EnableInterrupts(mask uintptr)
function SetupSystemTimer (line 197) | func SetupSystemTimer(cyclecount uint32) error {
FILE: src/device/arm/interrupts.c
function EnableInterrupts (line 3) | void EnableInterrupts(uintptr_t mask) {
function DisableInterrupts (line 12) | uintptr_t DisableInterrupts() {
FILE: src/device/arm/scb.go
constant SCB_BASE (line 13) | SCB_BASE = SCS_BASE + 0x0D00
type SCB_Type (line 18) | type SCB_Type struct
function SystemReset (line 49) | func SystemReset() {
constant SCB_CPUID_REVISION_Pos (line 58) | SCB_CPUID_REVISION_Pos = 0x0
constant SCB_CPUID_REVISION_Msk (line 59) | SCB_CPUID_REVISION_Msk = 0xf
constant SCB_CPUID_PARTNO_Pos (line 60) | SCB_CPUID_PARTNO_Pos = 0x4
constant SCB_CPUID_PARTNO_Msk (line 61) | SCB_CPUID_PARTNO_Msk = 0xfff0
constant SCB_CPUID_ARCHITECTURE_Pos (line 62) | SCB_CPUID_ARCHITECTURE_Pos = 0x10
constant SCB_CPUID_ARCHITECTURE_Msk (line 63) | SCB_CPUID_ARCHITECTURE_Msk = 0xf0000
constant SCB_CPUID_VARIANT_Pos (line 64) | SCB_CPUID_VARIANT_Pos = 0x14
constant SCB_CPUID_VARIANT_Msk (line 65) | SCB_CPUID_VARIANT_Msk = 0xf00000
constant SCB_CPUID_IMPLEMENTER_Pos (line 66) | SCB_CPUID_IMPLEMENTER_Pos = 0x18
constant SCB_CPUID_IMPLEMENTER_Msk (line 67) | SCB_CPUID_IMPLEMENTER_Msk = 0xff000000
constant SCB_ICSR_VECTACTIVE_Pos (line 70) | SCB_ICSR_VECTACTIVE_Pos = 0x0
constant SCB_ICSR_VECTACTIVE_Msk (line 71) | SCB_ICSR_VECTACTIVE_Msk = 0x1ff
constant SCB_ICSR_RETTOBASE_Pos (line 72) | SCB_ICSR_RETTOBASE_Pos = 0xb
constant SCB_ICSR_RETTOBASE_Msk (line 73) | SCB_ICSR_RETTOBASE_Msk = 0x800
constant SCB_ICSR_RETTOBASE (line 74) | SCB_ICSR_RETTOBASE = 0x800
constant SCB_ICSR_RETTOBASE_RETTOBASE_0 (line 75) | SCB_ICSR_RETTOBASE_RETTOBASE_0 = 0x0
constant SCB_ICSR_RETTOBASE_RETTOBASE_1 (line 76) | SCB_ICSR_RETTOBASE_RETTOBASE_1 = 0x1
constant SCB_ICSR_VECTPENDING_Pos (line 77) | SCB_ICSR_VECTPENDING_Pos = 0xc
constant SCB_ICSR_VECTPENDING_Msk (line 78) | SCB_ICSR_VECTPENDING_Msk = 0x1ff000
constant SCB_ICSR_ISRPENDING_Pos (line 79) | SCB_ICSR_ISRPENDING_Pos = 0x16
constant SCB_ICSR_ISRPENDING_Msk (line 80) | SCB_ICSR_ISRPENDING_Msk = 0x400000
constant SCB_ICSR_ISRPENDING (line 81) | SCB_ICSR_ISRPENDING = 0x400000
constant SCB_ICSR_ISRPENDING_ISRPENDING_0 (line 82) | SCB_ICSR_ISRPENDING_ISRPENDING_0 = 0x0
constant SCB_ICSR_ISRPENDING_ISRPENDING_1 (line 83) | SCB_ICSR_ISRPENDING_ISRPENDING_1 = 0x1
constant SCB_ICSR_PENDSTCLR_Pos (line 84) | SCB_ICSR_PENDSTCLR_Pos = 0x19
constant SCB_ICSR_PENDSTCLR_Msk (line 85) | SCB_ICSR_PENDSTCLR_Msk = 0x2000000
constant SCB_ICSR_PENDSTCLR (line 86) | SCB_ICSR_PENDSTCLR = 0x2000000
constant SCB_ICSR_PENDSTCLR_PENDSTCLR_0 (line 87) | SCB_ICSR_PENDSTCLR_PENDSTCLR_0 = 0x0
constant SCB_ICSR_PENDSTCLR_PENDSTCLR_1 (line 88) | SCB_ICSR_PENDSTCLR_PENDSTCLR_1 = 0x1
constant SCB_ICSR_PENDSTSET_Pos (line 89) | SCB_ICSR_PENDSTSET_Pos = 0x1a
constant SCB_ICSR_PENDSTSET_Msk (line 90) | SCB_ICSR_PENDSTSET_Msk = 0x4000000
constant SCB_ICSR_PENDSTSET (line 91) | SCB_ICSR_PENDSTSET = 0x4000000
constant SCB_ICSR_PENDSTSET_PENDSTSET_0 (line 92) | SCB_ICSR_PENDSTSET_PENDSTSET_0 = 0x0
constant SCB_ICSR_PENDSTSET_PENDSTSET_1 (line 93) | SCB_ICSR_PENDSTSET_PENDSTSET_1 = 0x1
constant SCB_ICSR_PENDSVCLR_Pos (line 94) | SCB_ICSR_PENDSVCLR_Pos = 0x1b
constant SCB_ICSR_PENDSVCLR_Msk (line 95) | SCB_ICSR_PENDSVCLR_Msk = 0x8000000
constant SCB_ICSR_PENDSVCLR (line 96) | SCB_ICSR_PENDSVCLR = 0x8000000
constant SCB_ICSR_PENDSVCLR_PENDSVCLR_0 (line 97) | SCB_ICSR_PENDSVCLR_PENDSVCLR_0 = 0x0
constant SCB_ICSR_PENDSVCLR_PENDSVCLR_1 (line 98) | SCB_ICSR_PENDSVCLR_PENDSVCLR_1 = 0x1
constant SCB_ICSR_PENDSVSET_Pos (line 99) | SCB_ICSR_PENDSVSET_Pos = 0x1c
constant SCB_ICSR_PENDSVSET_Msk (line 100) | SCB_ICSR_PENDSVSET_Msk = 0x10000000
constant SCB_ICSR_PENDSVSET (line 101) | SCB_ICSR_PENDSVSET = 0x10000000
constant SCB_ICSR_PENDSVSET_PENDSVSET_0 (line 102) | SCB_ICSR_PENDSVSET_PENDSVSET_0 = 0x0
constant SCB_ICSR_PENDSVSET_PENDSVSET_1 (line 103) | SCB_ICSR_PENDSVSET_PENDSVSET_1 = 0x1
constant SCB_ICSR_NMIPENDSET_Pos (line 104) | SCB_ICSR_NMIPENDSET_Pos = 0x1f
constant SCB_ICSR_NMIPENDSET_Msk (line 105) | SCB_ICSR_NMIPENDSET_Msk = 0x80000000
constant SCB_ICSR_NMIPENDSET (line 106) | SCB_ICSR_NMIPENDSET = 0x80000000
constant SCB_ICSR_NMIPENDSET_NMIPENDSET_0 (line 107) | SCB_ICSR_NMIPENDSET_NMIPENDSET_0 = 0x0
constant SCB_ICSR_NMIPENDSET_NMIPENDSET_1 (line 108) | SCB_ICSR_NMIPENDSET_NMIPENDSET_1 = 0x1
constant SCB_VTOR_TBLOFF_Pos (line 111) | SCB_VTOR_TBLOFF_Pos = 0x7
constant SCB_VTOR_TBLOFF_Msk (line 112) | SCB_VTOR_TBLOFF_Msk = 0xffffff80
constant SCB_AIRCR_VECTRESET_Pos (line 115) | SCB_AIRCR_VECTRESET_Pos = 0x0
constant SCB_AIRCR_VECTRESET_Msk (line 116) | SCB_AIRCR_VECTRESET_Msk = 0x1
constant SCB_AIRCR_VECTRESET (line 117) | SCB_AIRCR_VECTRESET = 0x1
constant SCB_AIRCR_VECTRESET_VECTRESET_0 (line 118) | SCB_AIRCR_VECTRESET_VECTRESET_0 = 0x0
constant SCB_AIRCR_VECTRESET_VECTRESET_1 (line 119) | SCB_AIRCR_VECTRESET_VECTRESET_1 = 0x1
constant SCB_AIRCR_VECTCLRACTIVE_Pos (line 120) | SCB_AIRCR_VECTCLRACTIVE_Pos = 0x1
constant SCB_AIRCR_VECTCLRACTIVE_Msk (line 121) | SCB_AIRCR_VECTCLRACTIVE_Msk = 0x2
constant SCB_AIRCR_VECTCLRACTIVE (line 122) | SCB_AIRCR_VECTCLRACTIVE = 0x2
constant SCB_AIRCR_VECTCLRACTIVE_VECTCLRACTIVE_0 (line 123) | SCB_AIRCR_VECTCLRACTIVE_VECTCLRACTIVE_0 = 0x0
constant SCB_AIRCR_VECTCLRACTIVE_VECTCLRACTIVE_1 (line 124) | SCB_AIRCR_VECTCLRACTIVE_VECTCLRACTIVE_1 = 0x1
constant SCB_AIRCR_SYSRESETREQ_Pos (line 125) | SCB_AIRCR_SYSRESETREQ_Pos = 0x2
constant SCB_AIRCR_SYSRESETREQ_Msk (line 126) | SCB_AIRCR_SYSRESETREQ_Msk = 0x4
constant SCB_AIRCR_SYSRESETREQ (line 127) | SCB_AIRCR_SYSRESETREQ = 0x4
constant SCB_AIRCR_SYSRESETREQ_SYSRESETREQ_0 (line 128) | SCB_AIRCR_SYSRESETREQ_SYSRESETREQ_0 = 0x0
constant SCB_AIRCR_SYSRESETREQ_SYSRESETREQ_1 (line 129) | SCB_AIRCR_SYSRESETREQ_SYSRESETREQ_1 = 0x1
constant SCB_AIRCR_PRIGROUP_Pos (line 130) | SCB_AIRCR_PRIGROUP_Pos = 0x8
constant SCB_AIRCR_PRIGROUP_Msk (line 131) | SCB_AIRCR_PRIGROUP_Msk = 0x700
constant SCB_AIRCR_ENDIANNESS_Pos (line 132) | SCB_AIRCR_ENDIANNESS_Pos = 0xf
constant SCB_AIRCR_ENDIANNESS_Msk (line 133) | SCB_AIRCR_ENDIANNESS_Msk = 0x8000
constant SCB_AIRCR_ENDIANNESS (line 134) | SCB_AIRCR_ENDIANNESS = 0x8000
constant SCB_AIRCR_ENDIANNESS_ENDIANNESS_0 (line 135) | SCB_AIRCR_ENDIANNESS_ENDIANNESS_0 = 0x0
constant SCB_AIRCR_ENDIANNESS_ENDIANNESS_1 (line 136) | SCB_AIRCR_ENDIANNESS_ENDIANNESS_1 = 0x1
constant SCB_AIRCR_VECTKEY_Pos (line 137) | SCB_AIRCR_VECTKEY_Pos = 0x10
constant SCB_AIRCR_VECTKEY_Msk (line 138) | SCB_AIRCR_VECTKEY_Msk = 0xffff0000
constant SCB_SCR_SLEEPONEXIT_Pos (line 141) | SCB_SCR_SLEEPONEXIT_Pos = 0x1
constant SCB_SCR_SLEEPONEXIT_Msk (line 142) | SCB_SCR_SLEEPONEXIT_Msk = 0x2
constant SCB_SCR_SLEEPONEXIT (line 143) | SCB_SCR_SLEEPONEXIT = 0x2
constant SCB_SCR_SLEEPONEXIT_SLEEPONEXIT_0 (line 144) | SCB_SCR_SLEEPONEXIT_SLEEPONEXIT_0 = 0x0
constant SCB_SCR_SLEEPONEXIT_SLEEPONEXIT_1 (line 145) | SCB_SCR_SLEEPONEXIT_SLEEPONEXIT_1 = 0x1
constant SCB_SCR_SLEEPDEEP_Pos (line 146) | SCB_SCR_SLEEPDEEP_Pos = 0x2
constant SCB_SCR_SLEEPDEEP_Msk (line 147) | SCB_SCR_SLEEPDEEP_Msk = 0x4
constant SCB_SCR_SLEEPDEEP (line 148) | SCB_SCR_SLEEPDEEP = 0x4
constant SCB_SCR_SLEEPDEEP_SLEEPDEEP_0 (line 149) | SCB_SCR_SLEEPDEEP_SLEEPDEEP_0 = 0x0
constant SCB_SCR_SLEEPDEEP_SLEEPDEEP_1 (line 150) | SCB_SCR_SLEEPDEEP_SLEEPDEEP_1 = 0x1
constant SCB_SCR_SEVONPEND_Pos (line 151) | SCB_SCR_SEVONPEND_Pos = 0x4
constant SCB_SCR_SEVONPEND_Msk (line 152) | SCB_SCR_SEVONPEND_Msk = 0x10
constant SCB_SCR_SEVONPEND (line 153) | SCB_SCR_SEVONPEND = 0x10
constant SCB_SCR_SEVONPEND_SEVONPEND_0 (line 154) | SCB_SCR_SEVONPEND_SEVONPEND_0 = 0x0
constant SCB_SCR_SEVONPEND_SEVONPEND_1 (line 155) | SCB_SCR_SEVONPEND_SEVONPEND_1 = 0x1
constant SCB_CCR_NONBASETHRDENA_Pos (line 158) | SCB_CCR_NONBASETHRDENA_Pos = 0x0
constant SCB_CCR_NONBASETHRDENA_Msk (line 159) | SCB_CCR_NONBASETHRDENA_Msk = 0x1
constant SCB_CCR_NONBASETHRDENA (line 160) | SCB_CCR_NONBASETHRDENA = 0x1
constant SCB_CCR_NONBASETHRDENA_NONBASETHRDENA_0 (line 161) | SCB_CCR_NONBASETHRDENA_NONBASETHRDENA_0 = 0x0
constant SCB_CCR_NONBASETHRDENA_NONBASETHRDENA_1 (line 162) | SCB_CCR_NONBASETHRDENA_NONBASETHRDENA_1 = 0x1
constant SCB_CCR_USERSETMPEND_Pos (line 163) | SCB_CCR_USERSETMPEND_Pos = 0x1
constant SCB_CCR_USERSETMPEND_Msk (line 164) | SCB_CCR_USERSETMPEND_Msk = 0x2
constant SCB_CCR_USERSETMPEND (line 165) | SCB_CCR_USERSETMPEND = 0x2
constant SCB_CCR_USERSETMPEND_USERSETMPEND_0 (line 166) | SCB_CCR_USERSETMPEND_USERSETMPEND_0 = 0x0
constant SCB_CCR_USERSETMPEND_USERSETMPEND_1 (line 167) | SCB_CCR_USERSETMPEND_USERSETMPEND_1 = 0x1
constant SCB_CCR_UNALIGN_TRP_Pos (line 168) | SCB_CCR_UNALIGN_TRP_Pos = 0x3
constant SCB_CCR_UNALIGN_TRP_Msk (line 169) | SCB_CCR_UNALIGN_TRP_Msk = 0x8
constant SCB_CCR_UNALIGN_TRP (line 170) | SCB_CCR_UNALIGN_TRP = 0x8
constant SCB_CCR_UNALIGN_TRP_UNALIGN_TRP_0 (line 171) | SCB_CCR_UNALIGN_TRP_UNALIGN_TRP_0 = 0x0
constant SCB_CCR_UNALIGN_TRP_UNALIGN_TRP_1 (line 172) | SCB_CCR_UNALIGN_TRP_UNALIGN_TRP_1 = 0x1
constant SCB_CCR_DIV_0_TRP_Pos (line 173) | SCB_CCR_DIV_0_TRP_Pos = 0x4
constant SCB_CCR_DIV_0_TRP_Msk (line 174) | SCB_CCR_DIV_0_TRP_Msk = 0x10
constant SCB_CCR_DIV_0_TRP (line 175) | SCB_CCR_DIV_0_TRP = 0x10
constant SCB_CCR_DIV_0_TRP_DIV_0_TRP_0 (line 176) | SCB_CCR_DIV_0_TRP_DIV_0_TRP_0 = 0x0
constant SCB_CCR_DIV_0_TRP_DIV_0_TRP_1 (line 177) | SCB_CCR_DIV_0_TRP_DIV_0_TRP_1 = 0x1
constant SCB_CCR_BFHFNMIGN_Pos (line 178) | SCB_CCR_BFHFNMIGN_Pos = 0x8
constant SCB_CCR_BFHFNMIGN_Msk (line 179) | SCB_CCR_BFHFNMIGN_Msk = 0x100
constant SCB_CCR_BFHFNMIGN (line 180) | SCB_CCR_BFHFNMIGN = 0x100
constant SCB_CCR_BFHFNMIGN_BFHFNMIGN_0 (line 181) | SCB_CCR_BFHFNMIGN_BFHFNMIGN_0 = 0x0
constant SCB_CCR_BFHFNMIGN_BFHFNMIGN_1 (line 182) | SCB_CCR_BFHFNMIGN_BFHFNMIGN_1 = 0x1
constant SCB_CCR_STKALIGN_Pos (line 183) | SCB_CCR_STKALIGN_Pos = 0x9
constant SCB_CCR_STKALIGN_Msk (line 184) | SCB_CCR_STKALIGN_Msk = 0x200
constant SCB_CCR_STKALIGN (line 185) | SCB_CCR_STKALIGN = 0x200
constant SCB_CCR_STKALIGN_STKALIGN_0 (line 186) | SCB_CCR_STKALIGN_STKALIGN_0 = 0x0
constant SCB_CCR_STKALIGN_STKALIGN_1 (line 187) | SCB_CCR_STKALIGN_STKALIGN_1 = 0x1
constant SCB_CCR_DC_Pos (line 188) | SCB_CCR_DC_Pos = 0x10
constant SCB_CCR_DC_Msk (line 189) | SCB_CCR_DC_Msk = 0x10000
constant SCB_CCR_DC (line 190) | SCB_CCR_DC = 0x10000
constant SCB_CCR_DC_DC_0 (line 191) | SCB_CCR_DC_DC_0 = 0x0
constant SCB_CCR_DC_DC_1 (line 192) | SCB_CCR_DC_DC_1 = 0x1
constant SCB_CCR_IC_Pos (line 193) | SCB_CCR_IC_Pos = 0x11
constant SCB_CCR_IC_Msk (line 194) | SCB_CCR_IC_Msk = 0x20000
constant SCB_CCR_IC (line 195) | SCB_CCR_IC = 0x20000
constant SCB_CCR_IC_IC_0 (line 196) | SCB_CCR_IC_IC_0 = 0x0
constant SCB_CCR_IC_IC_1 (line 197) | SCB_CCR_IC_IC_1 = 0x1
constant SCB_CCR_BP_Pos (line 198) | SCB_CCR_BP_Pos = 0x12
constant SCB_CCR_BP_Msk (line 199) | SCB_CCR_BP_Msk = 0x40000
constant SCB_CCR_BP (line 200) | SCB_CCR_BP = 0x40000
constant SCB_SHPR1_PRI_4_Pos (line 203) | SCB_SHPR1_PRI_4_Pos = 0x0
constant SCB_SHPR1_PRI_4_Msk (line 204) | SCB_SHPR1_PRI_4_Msk = 0xff
constant SCB_SHPR1_PRI_5_Pos (line 205) | SCB_SHPR1_PRI_5_Pos = 0x8
constant SCB_SHPR1_PRI_5_Msk (line 206) | SCB_SHPR1_PRI_5_Msk = 0xff00
constant SCB_SHPR1_PRI_6_Pos (line 207) | SCB_SHPR1_PRI_6_Pos = 0x10
constant SCB_SHPR1_PRI_6_Msk (line 208) | SCB_SHPR1_PRI_6_Msk = 0xff0000
constant SCB_SHPR2_PRI_11_Pos (line 211) | SCB_SHPR2_PRI_11_Pos = 0x18
constant SCB_SHPR2_PRI_11_Msk (line 212) | SCB_SHPR2_PRI_11_Msk = 0xff000000
constant SCB_SHPR3_PRI_14_Pos (line 215) | SCB_SHPR3_PRI_14_Pos = 0x10
constant SCB_SHPR3_PRI_14_Msk (line 216) | SCB_SHPR3_PRI_14_Msk = 0xff0000
constant SCB_SHPR3_PRI_15_Pos (line 217) | SCB_SHPR3_PRI_15_Pos = 0x18
constant SCB_SHPR3_PRI_15_Msk (line 218) | SCB_SHPR3_PRI_15_Msk = 0xff000000
constant SCB_SHCSR_MEMFAULTACT_Pos (line 221) | SCB_SHCSR_MEMFAULTACT_Pos = 0x0
constant SCB_SHCSR_MEMFAULTACT_Msk (line 222) | SCB_SHCSR_MEMFAULTACT_Msk = 0x1
constant SCB_SHCSR_MEMFAULTACT (line 223) | SCB_SHCSR_MEMFAULTACT = 0x1
constant SCB_SHCSR_MEMFAULTACT_MEMFAULTACT_0 (line 224) | SCB_SHCSR_MEMFAULTACT_MEMFAULTACT_0 = 0x0
constant SCB_SHCSR_MEMFAULTACT_MEMFAULTACT_1 (line 225) | SCB_SHCSR_MEMFAULTACT_MEMFAULTACT_1 = 0x1
constant SCB_SHCSR_BUSFAULTACT_Pos (line 226) | SCB_SHCSR_BUSFAULTACT_Pos = 0x1
constant SCB_SHCSR_BUSFAULTACT_Msk (line 227) | SCB_SHCSR_BUSFAULTACT_Msk = 0x2
constant SCB_SHCSR_BUSFAULTACT (line 228) | SCB_SHCSR_BUSFAULTACT = 0x2
constant SCB_SHCSR_BUSFAULTACT_BUSFAULTACT_0 (line 229) | SCB_SHCSR_BUSFAULTACT_BUSFAULTACT_0 = 0x0
constant SCB_SHCSR_BUSFAULTACT_BUSFAULTACT_1 (line 230) | SCB_SHCSR_BUSFAULTACT_BUSFAULTACT_1 = 0x1
constant SCB_SHCSR_USGFAULTACT_Pos (line 231) | SCB_SHCSR_USGFAULTACT_Pos = 0x3
constant SCB_SHCSR_USGFAULTACT_Msk (line 232) | SCB_SHCSR_USGFAULTACT_Msk = 0x8
constant SCB_SHCSR_USGFAULTACT (line 233) | SCB_SHCSR_USGFAULTACT = 0x8
constant SCB_SHCSR_USGFAULTACT_USGFAULTACT_0 (line 234) | SCB_SHCSR_USGFAULTACT_USGFAULTACT_0 = 0x0
constant SCB_SHCSR_USGFAULTACT_USGFAULTACT_1 (line 235) | SCB_SHCSR_USGFAULTACT_USGFAULTACT_1 = 0x1
constant SCB_SHCSR_SVCALLACT_Pos (line 236) | SCB_SHCSR_SVCALLACT_Pos = 0x7
constant SCB_SHCSR_SVCALLACT_Msk (line 237) | SCB_SHCSR_SVCALLACT_Msk = 0x80
constant SCB_SHCSR_SVCALLACT (line 238) | SCB_SHCSR_SVCALLACT = 0x80
constant SCB_SHCSR_SVCALLACT_SVCALLACT_0 (line 239) | SCB_SHCSR_SVCALLACT_SVCALLACT_0 = 0x0
constant SCB_SHCSR_SVCALLACT_SVCALLACT_1 (line 240) | SCB_SHCSR_SVCALLACT_SVCALLACT_1 = 0x1
constant SCB_SHCSR_MONITORACT_Pos (line 241) | SCB_SHCSR_MONITORACT_Pos = 0x8
constant SCB_SHCSR_MONITORACT_Msk (line 242) | SCB_SHCSR_MONITORACT_Msk = 0x100
constant SCB_SHCSR_MONITORACT (line 243) | SCB_SHCSR_MONITORACT = 0x100
constant SCB_SHCSR_MONITORACT_MONITORACT_0 (line 244) | SCB_SHCSR_MONITORACT_MONITORACT_0 = 0x0
constant SCB_SHCSR_MONITORACT_MONITORACT_1 (line 245) | SCB_SHCSR_MONITORACT_MONITORACT_1 = 0x1
constant SCB_SHCSR_PENDSVACT_Pos (line 246) | SCB_SHCSR_PENDSVACT_Pos = 0xa
constant SCB_SHCSR_PENDSVACT_Msk (line 247) | SCB_SHCSR_PENDSVACT_Msk = 0x400
constant SCB_SHCSR_PENDSVACT (line 248) | SCB_SHCSR_PENDSVACT = 0x400
constant SCB_SHCSR_PENDSVACT_PENDSVACT_0 (line 249) | SCB_SHCSR_PENDSVACT_PENDSVACT_0 = 0x0
constant SCB_SHCSR_PENDSVACT_PENDSVACT_1 (line 250) | SCB_SHCSR_PENDSVACT_PENDSVACT_1 = 0x1
constant SCB_SHCSR_SYSTICKACT_Pos (line 251) | SCB_SHCSR_SYSTICKACT_Pos = 0xb
constant SCB_SHCSR_SYSTICKACT_Msk (line 252) | SCB_SHCSR_SYSTICKACT_Msk = 0x800
constant SCB_SHCSR_SYSTICKACT (line 253) | SCB_SHCSR_SYSTICKACT = 0x800
constant SCB_SHCSR_SYSTICKACT_SYSTICKACT_0 (line 254) | SCB_SHCSR_SYSTICKACT_SYSTICKACT_0 = 0x0
constant SCB_SHCSR_SYSTICKACT_SYSTICKACT_1 (line 255) | SCB_SHCSR_SYSTICKACT_SYSTICKACT_1 = 0x1
constant SCB_SHCSR_USGFAULTPENDED_Pos (line 256) | SCB_SHCSR_USGFAULTPENDED_Pos = 0xc
constant SCB_SHCSR_USGFAULTPENDED_Msk (line 257) | SCB_SHCSR_USGFAULTPENDED_Msk = 0x1000
constant SCB_SHCSR_USGFAULTPENDED (line 258) | SCB_SHCSR_USGFAULTPENDED = 0x1000
constant SCB_SHCSR_USGFAULTPENDED_USGFAULTPENDED_0 (line 259) | SCB_SHCSR_USGFAULTPENDED_USGFAULTPENDED_0 = 0x0
constant SCB_SHCSR_USGFAULTPENDED_USGFAULTPENDED_1 (line 260) | SCB_SHCSR_USGFAULTPENDED_USGFAULTPENDED_1 = 0x1
constant SCB_SHCSR_MEMFAULTPENDED_Pos (line 261) | SCB_SHCSR_MEMFAULTPENDED_Pos = 0xd
constant SCB_SHCSR_MEMFAULTPENDED_Msk (line 262) | SCB_SHCSR_MEMFAULTPENDED_Msk = 0x2000
constant SCB_SHCSR_MEMFAULTPENDED (line 263) | SCB_SHCSR_MEMFAULTPENDED = 0x2000
constant SCB_SHCSR_MEMFAULTPENDED_MEMFAULTPENDED_0 (line 264) | SCB_SHCSR_MEMFAULTPENDED_MEMFAULTPENDED_0 = 0x0
constant SCB_SHCSR_MEMFAULTPENDED_MEMFAULTPENDED_1 (line 265) | SCB_SHCSR_MEMFAULTPENDED_MEMFAULTPENDED_1 = 0x1
constant SCB_SHCSR_BUSFAULTPENDED_Pos (line 266) | SCB_SHCSR_BUSFAULTPENDED_Pos = 0xe
constant SCB_SHCSR_BUSFAULTPENDED_Msk (line 267) | SCB_SHCSR_BUSFAULTPENDED_Msk = 0x4000
constant SCB_SHCSR_BUSFAULTPENDED (line 268) | SCB_SHCSR_BUSFAULTPENDED = 0x4000
constant SCB_SHCSR_BUSFAULTPENDED_BUSFAULTPENDED_0 (line 269) | SCB_SHCSR_BUSFAULTPENDED_BUSFAULTPENDED_0 = 0x0
constant SCB_SHCSR_BUSFAULTPENDED_BUSFAULTPENDED_1 (line 270) | SCB_SHCSR_BUSFAULTPENDED_BUSFAULTPENDED_1 = 0x1
constant SCB_SHCSR_SVCALLPENDED_Pos (line 271) | SCB_SHCSR_SVCALLPENDED_Pos = 0xf
constant SCB_SHCSR_SVCALLPENDED_Msk (line 272) | SCB_SHCSR_SVCALLPENDED_Msk = 0x8000
constant SCB_SHCSR_SVCALLPENDED (line 273) | SCB_SHCSR_SVCALLPENDED = 0x8000
constant SCB_SHCSR_SVCALLPENDED_SVCALLPENDED_0 (line 274) | SCB_SHCSR_SVCALLPENDED_SVCALLPENDED_0 = 0x0
constant SCB_SHCSR_SVCALLPENDED_SVCALLPENDED_1 (line 275) | SCB_SHCSR_SVCALLPENDED_SVCALLPENDED_1 = 0x1
constant SCB_SHCSR_MEMFAULTENA_Pos (line 276) | SCB_SHCSR_MEMFAULTENA_Pos = 0x10
constant SCB_SHCSR_MEMFAULTENA_Msk (line 277) | SCB_SHCSR_MEMFAULTENA_Msk = 0x10000
constant SCB_SHCSR_MEMFAULTENA (line 278) | SCB_SHCSR_MEMFAULTENA = 0x10000
constant SCB_SHCSR_MEMFAULTENA_MEMFAULTENA_0 (line 279) | SCB_SHCSR_MEMFAULTENA_MEMFAULTENA_0 = 0x0
constant SCB_SHCSR_MEMFAULTENA_MEMFAULTENA_1 (line 280) | SCB_SHCSR_MEMFAULTENA_MEMFAULTENA_1 = 0x1
constant SCB_SHCSR_BUSFAULTENA_Pos (line 281) | SCB_SHCSR_BUSFAULTENA_Pos = 0x11
constant SCB_SHCSR_BUSFAULTENA_Msk (line 282) | SCB_SHCSR_BUSFAULTENA_Msk = 0x20000
constant SCB_SHCSR_BUSFAULTENA (line 283) | SCB_SHCSR_BUSFAULTENA = 0x20000
constant SCB_SHCSR_BUSFAULTENA_BUSFAULTENA_0 (line 284) | SCB_SHCSR_BUSFAULTENA_BUSFAULTENA_0 = 0x0
constant SCB_SHCSR_BUSFAULTENA_BUSFAULTENA_1 (line 285) | SCB_SHCSR_BUSFAULTENA_BUSFAULTENA_1 = 0x1
constant SCB_SHCSR_USGFAULTENA_Pos (line 286) | SCB_SHCSR_USGFAULTENA_Pos = 0x12
constant SCB_SHCSR_USGFAULTENA_Msk (line 287) | SCB_SHCSR_USGFAULTENA_Msk = 0x40000
constant SCB_SHCSR_USGFAULTENA (line 288) | SCB_SHCSR_USGFAULTENA = 0x40000
constant SCB_SHCSR_USGFAULTENA_USGFAULTENA_0 (line 289) | SCB_SHCSR_USGFAULTENA_USGFAULTENA_0 = 0x0
constant SCB_SHCSR_USGFAULTENA_USGFAULTENA_1 (line 290) | SCB_SHCSR_USGFAULTENA_USGFAULTENA_1 = 0x1
constant SCB_CFSR_IACCVIOL_Pos (line 293) | SCB_CFSR_IACCVIOL_Pos = 0x0
constant SCB_CFSR_IACCVIOL_Msk (line 294) | SCB_CFSR_IACCVIOL_Msk = 0x1
constant SCB_CFSR_IACCVIOL (line 295) | SCB_CFSR_IACCVIOL = 0x1
constant SCB_CFSR_IACCVIOL_IACCVIOL_0 (line 296) | SCB_CFSR_IACCVIOL_IACCVIOL_0 = 0x0
constant SCB_CFSR_IACCVIOL_IACCVIOL_1 (line 297) | SCB_CFSR_IACCVIOL_IACCVIOL_1 = 0x1
constant SCB_CFSR_DACCVIOL_Pos (line 298) | SCB_CFSR_DACCVIOL_Pos = 0x1
constant SCB_CFSR_DACCVIOL_Msk (line 299) | SCB_CFSR_DACCVIOL_Msk = 0x2
constant SCB_CFSR_DACCVIOL (line 300) | SCB_CFSR_DACCVIOL = 0x2
constant SCB_CFSR_DACCVIOL_DACCVIOL_0 (line 301) | SCB_CFSR_DACCVIOL_DACCVIOL_0 = 0x0
constant SCB_CFSR_DACCVIOL_DACCVIOL_1 (line 302) | SCB_CFSR_DACCVIOL_DACCVIOL_1 = 0x1
constant SCB_CFSR_MUNSTKERR_Pos (line 303) | SCB_CFSR_MUNSTKERR_Pos = 0x3
constant SCB_CFSR_MUNSTKERR_Msk (line 304) | SCB_CFSR_MUNSTKERR_Msk = 0x8
constant SCB_CFSR_MUNSTKERR (line 305) | SCB_CFSR_MUNSTKERR = 0x8
constant SCB_CFSR_MUNSTKERR_MUNSTKERR_0 (line 306) | SCB_CFSR_MUNSTKERR_MUNSTKERR_0 = 0x0
constant SCB_CFSR_MUNSTKERR_MUNSTKERR_1 (line 307) | SCB_CFSR_MUNSTKERR_MUNSTKERR_1 = 0x1
constant SCB_CFSR_MSTKERR_Pos (line 308) | SCB_CFSR_MSTKERR_Pos = 0x4
constant SCB_CFSR_MSTKERR_Msk (line 309) | SCB_CFSR_MSTKERR_Msk = 0x10
constant SCB_CFSR_MSTKERR (line 310) | SCB_CFSR_MSTKERR = 0x10
constant SCB_CFSR_MSTKERR_MSTKERR_0 (line 311) | SCB_CFSR_MSTKERR_MSTKERR_0 = 0x0
constant SCB_CFSR_MSTKERR_MSTKERR_1 (line 312) | SCB_CFSR_MSTKERR_MSTKERR_1 = 0x1
constant SCB_CFSR_MLSPERR_Pos (line 313) | SCB_CFSR_MLSPERR_Pos = 0x5
constant SCB_CFSR_MLSPERR_Msk (line 314) | SCB_CFSR_MLSPERR_Msk = 0x20
constant SCB_CFSR_MLSPERR (line 315) | SCB_CFSR_MLSPERR = 0x20
constant SCB_CFSR_MLSPERR_MLSPERR_0 (line 316) | SCB_CFSR_MLSPERR_MLSPERR_0 = 0x0
constant SCB_CFSR_MLSPERR_MLSPERR_1 (line 317) | SCB_CFSR_MLSPERR_MLSPERR_1 = 0x1
constant SCB_CFSR_MMARVALID_Pos (line 318) | SCB_CFSR_MMARVALID_Pos = 0x7
constant SCB_CFSR_MMARVALID_Msk (line 319) | SCB_CFSR_MMARVALID_Msk = 0x80
constant SCB_CFSR_MMARVALID (line 320) | SCB_CFSR_MMARVALID = 0x80
constant SCB_CFSR_MMARVALID_MMARVALID_0 (line 321) | SCB_CFSR_MMARVALID_MMARVALID_0 = 0x0
constant SCB_CFSR_MMARVALID_MMARVALID_1 (line 322) | SCB_CFSR_MMARVALID_MMARVALID_1 = 0x1
constant SCB_CFSR_IBUSERR_Pos (line 323) | SCB_CFSR_IBUSERR_Pos = 0x8
constant SCB_CFSR_IBUSERR_Msk (line 324) | SCB_CFSR_IBUSERR_Msk = 0x100
constant SCB_CFSR_IBUSERR (line 325) | SCB_CFSR_IBUSERR = 0x100
constant SCB_CFSR_IBUSERR_IBUSERR_0 (line 326) | SCB_CFSR_IBUSERR_IBUSERR_0 = 0x0
constant SCB_CFSR_IBUSERR_IBUSERR_1 (line 327) | SCB_CFSR_IBUSERR_IBUSERR_1 = 0x1
constant SCB_CFSR_PRECISERR_Pos (line 328) | SCB_CFSR_PRECISERR_Pos = 0x9
constant SCB_CFSR_PRECISERR_Msk (line 329) | SCB_CFSR_PRECISERR_Msk = 0x200
constant SCB_CFSR_PRECISERR (line 330) | SCB_CFSR_PRECISERR = 0x200
constant SCB_CFSR_PRECISERR_PRECISERR_0 (line 331) | SCB_CFSR_PRECISERR_PRECISERR_0 = 0x0
constant SCB_CFSR_PRECISERR_PRECISERR_1 (line 332) | SCB_CFSR_PRECISERR_PRECISERR_1 = 0x1
constant SCB_CFSR_IMPRECISERR_Pos (line 333) | SCB_CFSR_IMPRECISERR_Pos = 0xa
constant SCB_CFSR_IMPRECISERR_Msk (line 334) | SCB_CFSR_IMPRECISERR_Msk = 0x400
constant SCB_CFSR_IMPRECISERR (line 335) | SCB_CFSR_IMPRECISERR = 0x400
constant SCB_CFSR_IMPRECISERR_IMPRECISERR_0 (line 336) | SCB_CFSR_IMPRECISERR_IMPRECISERR_0 = 0x0
constant SCB_CFSR_IMPRECISERR_IMPRECISERR_1 (line 337) | SCB_CFSR_IMPRECISERR_IMPRECISERR_1 = 0x1
constant SCB_CFSR_UNSTKERR_Pos (line 338) | SCB_CFSR_UNSTKERR_Pos = 0xb
constant SCB_CFSR_UNSTKERR_Msk (line 339) | SCB_CFSR_UNSTKERR_Msk = 0x800
constant SCB_CFSR_UNSTKERR (line 340) | SCB_CFSR_UNSTKERR = 0x800
constant SCB_CFSR_UNSTKERR_UNSTKERR_0 (line 341) | SCB_CFSR_UNSTKERR_UNSTKERR_0 = 0x0
constant SCB_CFSR_UNSTKERR_UNSTKERR_1 (line 342) | SCB_CFSR_UNSTKERR_UNSTKERR_1 = 0x1
constant SCB_CFSR_STKERR_Pos (line 343) | SCB_CFSR_STKERR_Pos = 0xc
constant SCB_CFSR_STKERR_Msk (line 344) | SCB_CFSR_STKERR_Msk = 0x1000
constant SCB_CFSR_STKERR (line 345) | SCB_CFSR_STKERR = 0x1000
constant SCB_CFSR_STKERR_STKERR_0 (line 346) | SCB_CFSR_STKERR_STKERR_0 = 0x0
constant SCB_CFSR_STKERR_STKERR_1 (line 347) | SCB_CFSR_STKERR_STKERR_1 = 0x1
constant SCB_CFSR_LSPERR_Pos (line 348) | SCB_CFSR_LSPERR_Pos = 0xd
constant SCB_CFSR_LSPERR_Msk (line 349) | SCB_CFSR_LSPERR_Msk = 0x2000
constant SCB_CFSR_LSPERR (line 350) | SCB_CFSR_LSPERR = 0x2000
constant SCB_CFSR_LSPERR_LSPERR_0 (line 351) | SCB_CFSR_LSPERR_LSPERR_0 = 0x0
constant SCB_CFSR_LSPERR_LSPERR_1 (line 352) | SCB_CFSR_LSPERR_LSPERR_1 = 0x1
constant SCB_CFSR_BFARVALID_Pos (line 353) | SCB_CFSR_BFARVALID_Pos = 0xf
constant SCB_CFSR_BFARVALID_Msk (line 354) | SCB_CFSR_BFARVALID_Msk = 0x8000
constant SCB_CFSR_BFARVALID (line 355) | SCB_CFSR_BFARVALID = 0x8000
constant SCB_CFSR_BFARVALID_BFARVALID_0 (line 356) | SCB_CFSR_BFARVALID_BFARVALID_0 = 0x0
constant SCB_CFSR_BFARVALID_BFARVALID_1 (line 357) | SCB_CFSR_BFARVALID_BFARVALID_1 = 0x1
constant SCB_CFSR_UNDEFINSTR_Pos (line 358) | SCB_CFSR_UNDEFINSTR_Pos = 0x10
constant SCB_CFSR_UNDEFINSTR_Msk (line 359) | SCB_CFSR_UNDEFINSTR_Msk = 0x10000
constant SCB_CFSR_UNDEFINSTR (line 360) | SCB_CFSR_UNDEFINSTR = 0x10000
constant SCB_CFSR_UNDEFINSTR_UNDEFINSTR_0 (line 361) | SCB_CFSR_UNDEFINSTR_UNDEFINSTR_0 = 0x0
constant SCB_CFSR_UNDEFINSTR_UNDEFINSTR_1 (line 362) | SCB_CFSR_UNDEFINSTR_UNDEFINSTR_1 = 0x1
constant SCB_CFSR_INVSTATE_Pos (line 363) | SCB_CFSR_INVSTATE_Pos = 0x11
constant SCB_CFSR_INVSTATE_Msk (line 364) | SCB_CFSR_INVSTATE_Msk = 0x20000
constant SCB_CFSR_INVSTATE (line 365) | SCB_CFSR_INVSTATE = 0x20000
constant SCB_CFSR_INVSTATE_INVSTATE_0 (line 366) | SCB_CFSR_INVSTATE_INVSTATE_0 = 0x0
constant SCB_CFSR_INVSTATE_INVSTATE_1 (line 367) | SCB_CFSR_INVSTATE_INVSTATE_1 = 0x1
constant SCB_CFSR_INVPC_Pos (line 368) | SCB_CFSR_INVPC_Pos = 0x12
constant SCB_CFSR_INVPC_Msk (line 369) | SCB_CFSR_INVPC_Msk = 0x40000
constant SCB_CFSR_INVPC (line 370) | SCB_CFSR_INVPC = 0x40000
constant SCB_CFSR_INVPC_INVPC_0 (line 371) | SCB_CFSR_INVPC_INVPC_0 = 0x0
constant SCB_CFSR_INVPC_INVPC_1 (line 372) | SCB_CFSR_INVPC_INVPC_1 = 0x1
constant SCB_CFSR_NOCP_Pos (line 373) | SCB_CFSR_NOCP_Pos = 0x13
constant SCB_CFSR_NOCP_Msk (line 374) | SCB_CFSR_NOCP_Msk = 0x80000
constant SCB_CFSR_NOCP (line 375) | SCB_CFSR_NOCP = 0x80000
constant SCB_CFSR_NOCP_NOCP_0 (line 376) | SCB_CFSR_NOCP_NOCP_0 = 0x0
constant SCB_CFSR_NOCP_NOCP_1 (line 377) | SCB_CFSR_NOCP_NOCP_1 = 0x1
constant SCB_CFSR_UNALIGNED_Pos (line 378) | SCB_CFSR_UNALIGNED_Pos = 0x18
constant SCB_CFSR_UNALIGNED_Msk (line 379) | SCB_CFSR_UNALIGNED_Msk = 0x1000000
constant SCB_CFSR_UNALIGNED (line 380) | SCB_CFSR_UNALIGNED = 0x1000000
constant SCB_CFSR_UNALIGNED_UNALIGNED_0 (line 381) | SCB_CFSR_UNALIGNED_UNALIGNED_0 = 0x0
constant SCB_CFSR_UNALIGNED_UNALIGNED_1 (line 382) | SCB_CFSR_UNALIGNED_UNALIGNED_1 = 0x1
constant SCB_CFSR_DIVBYZERO_Pos (line 383) | SCB_CFSR_DIVBYZERO_Pos = 0x19
constant SCB_CFSR_DIVBYZERO_Msk (line 384) | SCB_CFSR_DIVBYZERO_Msk = 0x2000000
constant SCB_CFSR_DIVBYZERO (line 385) | SCB_CFSR_DIVBYZERO = 0x2000000
constant SCB_CFSR_DIVBYZERO_DIVBYZERO_0 (line 386) | SCB_CFSR_DIVBYZERO_DIVBYZERO_0 = 0x0
constant SCB_CFSR_DIVBYZERO_DIVBYZERO_1 (line 387) | SCB_CFSR_DIVBYZERO_DIVBYZERO_1 = 0x1
constant SCB_HFSR_VECTTBL_Pos (line 390) | SCB_HFSR_VECTTBL_Pos = 0x1
constant SCB_HFSR_VECTTBL_Msk (line 391) | SCB_HFSR_VECTTBL_Msk = 0x2
constant SCB_HFSR_VECTTBL (line 392) | SCB_HFSR_VECTTBL = 0x2
constant SCB_HFSR_VECTTBL_VECTTBL_0 (line 393) | SCB_HFSR_VECTTBL_VECTTBL_0 = 0x0
constant SCB_HFSR_VECTTBL_VECTTBL_1 (line 394) | SCB_HFSR_VECTTBL_VECTTBL_1 = 0x1
constant SCB_HFSR_FORCED_Pos (line 395) | SCB_HFSR_FORCED_Pos = 0x1e
constant SCB_HFSR_FORCED_Msk (line 396) | SCB_HFSR_FORCED_Msk = 0x40000000
constant SCB_HFSR_FORCED (line 397) | SCB_HFSR_FORCED = 0x40000000
constant SCB_HFSR_FORCED_FORCED_0 (line 398) | SCB_HFSR_FORCED_FORCED_0 = 0x0
constant SCB_HFSR_FORCED_FORCED_1 (line 399) | SCB_HFSR_FORCED_FORCED_1 = 0x1
constant SCB_HFSR_DEBUGEVT_Pos (line 400) | SCB_HFSR_DEBUGEVT_Pos = 0x1f
constant SCB_HFSR_DEBUGEVT_Msk (line 401) | SCB_HFSR_DEBUGEVT_Msk = 0x80000000
constant SCB_HFSR_DEBUGEVT (line 402) | SCB_HFSR_DEBUGEVT = 0x80000000
constant SCB_HFSR_DEBUGEVT_DEBUGEVT_0 (line 403) | SCB_HFSR_DEBUGEVT_DEBUGEVT_0 = 0x0
constant SCB_HFSR_DEBUGEVT_DEBUGEVT_1 (line 404) | SCB_HFSR_DEBUGEVT_DEBUGEVT_1 = 0x1
constant SCB_DFSR_HALTED_Pos (line 407) | SCB_DFSR_HALTED_Pos = 0x0
constant SCB_DFSR_HALTED_Msk (line 408) | SCB_DFSR_HALTED_Msk = 0x1
constant SCB_DFSR_HALTED (line 409) | SCB_DFSR_HALTED = 0x1
constant SCB_DFSR_HALTED_HALTED_0 (line 410) | SCB_DFSR_HALTED_HALTED_0 = 0x0
constant SCB_DFSR_HALTED_HALTED_1 (line 411) | SCB_DFSR_HALTED_HALTED_1 = 0x1
constant SCB_DFSR_BKPT_Pos (line 412) | SCB_DFSR_BKPT_Pos = 0x1
constant SCB_DFSR_BKPT_Msk (line 413) | SCB_DFSR_BKPT_Msk = 0x2
constant SCB_DFSR_BKPT (line 414) | SCB_DFSR_BKPT = 0x2
constant SCB_DFSR_BKPT_BKPT_0 (line 415) | SCB_DFSR_BKPT_BKPT_0 = 0x0
constant SCB_DFSR_BKPT_BKPT_1 (line 416) | SCB_DFSR_BKPT_BKPT_1 = 0x1
constant SCB_DFSR_DWTTRAP_Pos (line 417) | SCB_DFSR_DWTTRAP_Pos = 0x2
constant SCB_DFSR_DWTTRAP_Msk (line 418) | SCB_DFSR_DWTTRAP_Msk = 0x4
constant SCB_DFSR_DWTTRAP (line 419) | SCB_DFSR_DWTTRAP = 0x4
constant SCB_DFSR_DWTTRAP_DWTTRAP_0 (line 420) | SCB_DFSR_DWTTRAP_DWTTRAP_0 = 0x0
constant SCB_DFSR_DWTTRAP_DWTTRAP_1 (line 421) | SCB_DFSR_DWTTRAP_DWTTRAP_1 = 0x1
constant SCB_DFSR_VCATCH_Pos (line 422) | SCB_DFSR_VCATCH_Pos = 0x3
constant SCB_DFSR_VCATCH_Msk (line 423) | SCB_DFSR_VCATCH_Msk = 0x8
constant SCB_DFSR_VCATCH (line 424) | SCB_DFSR_VCATCH = 0x8
constant SCB_DFSR_VCATCH_VCATCH_0 (line 425) | SCB_DFSR_VCATCH_VCATCH_0 = 0x0
constant SCB_DFSR_VCATCH_VCATCH_1 (line 426) | SCB_DFSR_VCATCH_VCATCH_1 = 0x1
constant SCB_DFSR_EXTERNAL_Pos (line 427) | SCB_DFSR_EXTERNAL_Pos = 0x4
constant SCB_DFSR_EXTERNAL_Msk (line 428) | SCB_DFSR_EXTERNAL_Msk = 0x10
constant SCB_DFSR_EXTERNAL (line 429) | SCB_DFSR_EXTERNAL = 0x10
constant SCB_DFSR_EXTERNAL_EXTERNAL_0 (line 430) | SCB_DFSR_EXTERNAL_EXTERNAL_0 = 0x0
constant SCB_DFSR_EXTERNAL_EXTERNAL_1 (line 431) | SCB_DFSR_EXTERNAL_EXTERNAL_1 = 0x1
constant SCB_MMFAR_ADDRESS_Pos (line 434) | SCB_MMFAR_ADDRESS_Pos = 0x0
constant SCB_MMFAR_ADDRESS_Msk (line 435) | SCB_MMFAR_ADDRESS_Msk = 0xffffffff
constant SCB_BFAR_ADDRESS_Pos (line 438) | SCB_BFAR_ADDRESS_Pos = 0x0
constant SCB_BFAR_ADDRESS_Msk (line 439) | SCB_BFAR_ADDRESS_Msk = 0xffffffff
FILE: src/device/arm/semihosting.go
constant SemihostingClock (line 7) | SemihostingClock = 0x10
constant SemihostingClose (line 8) | SemihostingClose = 0x02
constant SemihostingElapsed (line 9) | SemihostingElapsed = 0x30
constant SemihostingErrno (line 10) | SemihostingErrno = 0x13
constant SemihostingFileLen (line 11) | SemihostingFileLen = 0x0C
constant SemihostingGetCmdline (line 12) | SemihostingGetCmdline = 0x15
constant SemihostingHeapInfo (line 13) | SemihostingHeapInfo = 0x16
constant SemihostingIsError (line 14) | SemihostingIsError = 0x08
constant SemihostingIsTTY (line 15) | SemihostingIsTTY = 0x09
constant SemihostingOpen (line 16) | SemihostingOpen = 0x01
constant SemihostingRead (line 17) | SemihostingRead = 0x06
constant SemihostingReadByte (line 18) | SemihostingReadByte = 0x07
constant SemihostingRemove (line 19) | SemihostingRemove = 0x0E
constant SemihostingRename (line 20) | SemihostingRename = 0x0F
constant SemihostingSeek (line 21) | SemihostingSeek = 0x0A
constant SemihostingSystem (line 22) | SemihostingSystem = 0x12
constant SemihostingTickFreq (line 23) | SemihostingTickFreq = 0x31
constant SemihostingTime (line 24) | SemihostingTime = 0x11
constant SemihostingTmpName (line 25) | SemihostingTmpName = 0x0D
constant SemihostingWrite (line 26) | SemihostingWrite = 0x05
constant SemihostingWrite0 (line 27) | SemihostingWrite0 = 0x04
constant SemihostingWriteByte (line 28) | SemihostingWriteByte = 0x03
constant SemihostingEnterSVC (line 31) | SemihostingEnterSVC = 0x17
constant SemihostingReportException (line 32) | SemihostingReportException = 0x18
constant SemihostingBranchThroughZero (line 39) | SemihostingBranchThroughZero = 0x20000
constant SemihostingUndefinedInstr (line 40) | SemihostingUndefinedInstr = 0x20001
constant SemihostingSoftwareInterrupt (line 41) | SemihostingSoftwareInterrupt = 0x20002
constant SemihostingPrefetchAbort (line 42) | SemihostingPrefetchAbort = 0x20003
constant SemihostingDataAbort (line 43) | SemihostingDataAbort = 0x20004
constant SemihostingAddressException (line 44) | SemihostingAddressException = 0x20005
constant SemihostingIRQ (line 45) | SemihostingIRQ = 0x20006
constant SemihostingFIQ (line 46) | SemihostingFIQ = 0x20007
constant SemihostingBreakPoint (line 49) | SemihostingBreakPoint = 0x20020
constant SemihostingWatchPoint (line 50) | SemihostingWatchPoint = 0x20021
constant SemihostingStepComplete (line 51) | SemihostingStepComplete = 0x20022
constant SemihostingRunTimeErrorUnknown (line 52) | SemihostingRunTimeErrorUnknown = 0x20023
constant SemihostingInternalError (line 53) | SemihostingInternalError = 0x20024
constant SemihostingUserInterruption (line 54) | SemihostingUserInterruption = 0x20025
constant SemihostingApplicationExit (line 55) | SemihostingApplicationExit = 0x20026
constant SemihostingStackOverflow (line 56) | SemihostingStackOverflow = 0x20027
constant SemihostingDivisionByZero (line 57) | SemihostingDivisionByZero = 0x20028
constant SemihostingOSSpecific (line 58) | SemihostingOSSpecific = 0x20029
function SemihostingCall (line 65) | func SemihostingCall(num int, arg uintptr) int
FILE: src/device/arm64/arm64.go
function Asm (line 6) | func Asm(asm string)
function AsmFull (line 21) | func AsmFull(asm string, regs map[string]interface{}) uintptr
function SVCall0 (line 24) | func SVCall0(num uintptr) uintptr
function SVCall1 (line 27) | func SVCall1(num uintptr, a1 interface{}) uintptr
function SVCall2 (line 30) | func SVCall2(num uintptr, a1, a2 interface{}) uintptr
function SVCall3 (line 33) | func SVCall3(num uintptr, a1, a2, a3 interface{}) uintptr
function SVCall4 (line 36) | func SVCall4(num uintptr, a1, a2, a3, a4 interface{}) uintptr
FILE: src/device/asm.go
function Asm (line 6) | func Asm(asm string)
function AsmFull (line 21) | func AsmFull(asm string, regs map[string]interface{}) uintptr
FILE: src/device/gba/gba.go
constant IRQ_VBLANK (line 14) | IRQ_VBLANK = 0
constant IRQ_HBLANK (line 15) | IRQ_HBLANK = 1
constant IRQ_VCOUNT (line 16) | IRQ_VCOUNT = 2
constant IRQ_TIMER0 (line 17) | IRQ_TIMER0 = 3
constant IRQ_TIMER1 (line 18) | IRQ_TIMER1 = 4
constant IRQ_TIMER2 (line 19) | IRQ_TIMER2 = 5
constant IRQ_TIMER3 (line 20) | IRQ_TIMER3 = 6
constant IRQ_COM (line 21) | IRQ_COM = 7
constant IRQ_DMA0 (line 22) | IRQ_DMA0 = 8
constant IRQ_DMA1 (line 23) | IRQ_DMA1 = 9
constant IRQ_DMA2 (line 24) | IRQ_DMA2 = 10
constant IRQ_DMA3 (line 25) | IRQ_DMA3 = 11
constant IRQ_KEYPAD (line 26) | IRQ_KEYPAD = 12
constant IRQ_GAMEPAK (line 27) | IRQ_GAMEPAK = 13
constant MEM_EWRAM (line 93) | MEM_EWRAM uintptr = 0x02000000
constant MEM_IWRAM (line 96) | MEM_IWRAM uintptr = 0x03000000
constant MEM_IO (line 99) | MEM_IO uintptr = 0x04000000
constant MEM_PAL (line 102) | MEM_PAL uintptr = 0x05000000
constant MEM_VRAM (line 105) | MEM_VRAM uintptr = 0x06000000
constant MEM_OAM (line 108) | MEM_OAM uintptr = 0x07000000
constant MEM_ROM (line 111) | MEM_ROM uintptr = 0x08000000
constant MEM_SRAM (line 114) | MEM_SRAM uintptr = 0x0E000000
constant EWRAM_SIZE (line 119) | EWRAM_SIZE uintptr = 0x40000
constant IWRAM_SIZE (line 120) | IWRAM_SIZE uintptr = 0x08000
constant PAL_SIZE (line 121) | PAL_SIZE uintptr = 0x00400
constant VRAM_SIZE (line 122) | VRAM_SIZE uintptr = 0x18000
constant OAM_SIZE (line 123) | OAM_SIZE uintptr = 0x00400
constant SRAM_SIZE (line 124) | SRAM_SIZE uintptr = 0x10000
constant PAL_BG_SIZE (line 130) | PAL_BG_SIZE = 0x00200
constant PAL_OBJ_SIZE (line 133) | PAL_OBJ_SIZE = 0x00200
constant CBB_SIZE (line 136) | CBB_SIZE = 0x04000
constant SBB_SIZE (line 139) | SBB_SIZE = 0x00800
constant VRAM_BG_SIZE_MODE_0_2 (line 142) | VRAM_BG_SIZE_MODE_0_2 = 0x10000
constant VRAM_BG_SIZE_MODE_3_5 (line 145) | VRAM_BG_SIZE_MODE_3_5 = 0x14000
constant VRAM_OBJ_SIZE (line 148) | VRAM_OBJ_SIZE = 0x08000
constant M3_SIZE (line 151) | M3_SIZE = 0x12C00
constant M4_SIZE (line 154) | M4_SIZE = 0x09600
constant M5_SIZE (line 157) | M5_SIZE = 0x0A000
constant VRAM_PAGE_SIZE (line 160) | VRAM_PAGE_SIZE = 0x0A000
type DISP_Type (line 187) | type DISP_Type struct
type BGCNT_Type (line 195) | type BGCNT_Type struct
type BG_Type (line 200) | type BG_Type struct
type BG_AFFINE_Type (line 206) | type BG_AFFINE_Type struct
type WIN_Type (line 215) | type WIN_Type struct
type GRAPHICS_Type (line 235) | type GRAPHICS_Type struct
type SOUND1_Type (line 249) | type SOUND1_Type struct
type SOUND2_Type (line 260) | type SOUND2_Type struct
type SOUND3_Type (line 271) | type SOUND3_Type struct
type SOUND4_Type (line 282) | type SOUND4_Type struct
type SOUND_Type (line 293) | type SOUND_Type struct
type DMA_Type (line 305) | type DMA_Type struct
type TIMER_Type (line 315) | type TIMER_Type struct
type SIODATA32_Type (line 321) | type SIODATA32_Type struct
type SIOMULTI_Type (line 330) | type SIOMULTI_Type struct
type SIO_Type (line 339) | type SIO_Type struct
type KEY_Type (line 344) | type KEY_Type struct
type INTERRUPT_Type (line 352) | type INTERRUPT_Type struct
type OAMOBJ_Type (line 361) | type OAMOBJ_Type struct
type OAMROT_Type (line 369) | type OAMROT_Type struct
constant DISPCNT_BGMODE_Pos (line 392) | DISPCNT_BGMODE_Pos = 0x0
constant DISPCNT_BGMODE_Msk (line 394) | DISPCNT_BGMODE_Msk = 0x4
constant DISPCNT_BGMODE_0 (line 396) | DISPCNT_BGMODE_0 = 0x0
constant DISPCNT_BGMODE_1 (line 398) | DISPCNT_BGMODE_1 = 0x1
constant DISPCNT_BGMODE_2 (line 400) | DISPCNT_BGMODE_2 = 0x2
constant DISPCNT_BGMODE_3 (line 402) | DISPCNT_BGMODE_3 = 0x3
constant DISPCNT_BGMODE_4 (line 404) | DISPCNT_BGMODE_4 = 0x4
constant DISPCNT_FRAMESELECT_Pos (line 407) | DISPCNT_FRAMESELECT_Pos = 0x4
constant DISPCNT_FRAMESELECT_FRAME0 (line 408) | DISPCNT_FRAMESELECT_FRAME0 = 0x0
constant DISPCNT_FRAMESELECT_FRAME1 (line 409) | DISPCNT_FRAMESELECT_FRAME1 = 0x1
constant DISPCNT_HBLANKINTERVAL_Pos (line 412) | DISPCNT_HBLANKINTERVAL_Pos = 0x5
constant DISPCNT_HBLANKINTERVAL_NOALLOW (line 413) | DISPCNT_HBLANKINTERVAL_NOALLOW = 0x0
constant DISPCNT_HBLANKINTERVAL_ALLOW (line 414) | DISPCNT_HBLANKINTERVAL_ALLOW = 0x1
constant DISPCNT_OBJCHARVRAM_Pos (line 417) | DISPCNT_OBJCHARVRAM_Pos = 0x6
constant DISPCNT_OBJCHARVRAM_2D (line 418) | DISPCNT_OBJCHARVRAM_2D = 0x0
constant DISPCNT_OBJCHARVRAM_1D (line 419) | DISPCNT_OBJCHARVRAM_1D = 0x1
constant DISPCNT_FORCEDBLANK_Pos (line 422) | DISPCNT_FORCEDBLANK_Pos = 0x7
constant DISPCNT_FORCEDBLANK_NOALLOW (line 423) | DISPCNT_FORCEDBLANK_NOALLOW = 0x0
constant DISPCNT_FORCEDBLANK_ALLOW (line 424) | DISPCNT_FORCEDBLANK_ALLOW = 0x1
constant DISPCNT_SCREENDISPLAY_BG0_Pos (line 427) | DISPCNT_SCREENDISPLAY_BG0_Pos = 0x8
constant DISPCNT_SCREENDISPLAY_BG0_ENABLE (line 428) | DISPCNT_SCREENDISPLAY_BG0_ENABLE = 0x1
constant DISPCNT_SCREENDISPLAY_BG0_DISABLE (line 429) | DISPCNT_SCREENDISPLAY_BG0_DISABLE = 0x0
constant DISPCNT_SCREENDISPLAY_BG1_Pos (line 432) | DISPCNT_SCREENDISPLAY_BG1_Pos = 0x9
constant DISPCNT_SCREENDISPLAY_BG1_ENABLE (line 433) | DISPCNT_SCREENDISPLAY_BG1_ENABLE = 0x1
constant DISPCNT_SCREENDISPLAY_BG1_DISABLE (line 434) | DISPCNT_SCREENDISPLAY_BG1_DISABLE = 0x0
constant DISPCNT_SCREENDISPLAY_BG2_Pos (line 437) | DISPCNT_SCREENDISPLAY_BG2_Pos = 0xA
constant DISPCNT_SCREENDISPLAY_BG2_ENABLE (line 438) | DISPCNT_SCREENDISPLAY_BG2_ENABLE = 0x1
constant DISPCNT_SCREENDISPLAY_BG2_DISABLE (line 439) | DISPCNT_SCREENDISPLAY_BG2_DISABLE = 0x0
constant DISPCNT_SCREENDISPLAY_BG3_Pos (line 442) | DISPCNT_SCREENDISPLAY_BG3_Pos = 0xB
constant DISPCNT_SCREENDISPLAY_BG3_ENABLE (line 443) | DISPCNT_SCREENDISPLAY_BG3_ENABLE = 0x1
constant DISPCNT_SCREENDISPLAY_BG3_DISABLE (line 444) | DISPCNT_SCREENDISPLAY_BG3_DISABLE = 0x0
constant DISPCNT_SCREENDISPLAY_OBJ_Pos (line 447) | DISPCNT_SCREENDISPLAY_OBJ_Pos = 0xC
constant DISPCNT_SCREENDISPLAY_OBJ_ENABLE (line 448) | DISPCNT_SCREENDISPLAY_OBJ_ENABLE = 0x1
constant DISPCNT_SCREENDISPLAY_OBJ_DISABLE (line 449) | DISPCNT_SCREENDISPLAY_OBJ_DISABLE = 0x0
constant DISPCNT_WINDOW0_DISPLAY_Pos (line 452) | DISPCNT_WINDOW0_DISPLAY_Pos = 0xD
constant DISPCNT_WINDOW0_DISPLAY_ENABLE (line 453) | DISPCNT_WINDOW0_DISPLAY_ENABLE = 0x1
constant DISPCNT_WINDOW0_DISPLAY_DISABLE (line 454) | DISPCNT_WINDOW0_DISPLAY_DISABLE = 0x0
constant DISPCNT_WINDOW1_DISPLAY_Pos (line 457) | DISPCNT_WINDOW1_DISPLAY_Pos = 0xE
constant DISPCNT_WINDOW1_DISPLAY_ENABLE (line 458) | DISPCNT_WINDOW1_DISPLAY_ENABLE = 0x1
constant DISPCNT_WINDOW1_DISPLAY_DISABLE (line 459) | DISPCNT_WINDOW1_DISPLAY_DISABLE = 0x0
constant DISPCNT_WINDOWOBJ_DISPLAY_Pos (line 462) | DISPCNT_WINDOWOBJ_DISPLAY_Pos = 0xF
constant DISPCNT_WINDOWOBJ_DISPLAY_ENABLE (line 463) | DISPCNT_WINDOWOBJ_DISPLAY_ENABLE = 0x1
constant DISPCNT_WINDOWOBJ_DISPLAY_DISABLE (line 464) | DISPCNT_WINDOWOBJ_DISPLAY_DISABLE = 0x0
constant DISPSTAT_VBLANK_Pos (line 468) | DISPSTAT_VBLANK_Pos = 0x0
constant DISPSTAT_VBLANK_ENABLE (line 469) | DISPSTAT_VBLANK_ENABLE = 0x1
constant DISPSTAT_VBLANK_DISABLE (line 470) | DISPSTAT_VBLANK_DISABLE = 0x0
constant DISPSTAT_HBLANK_Pos (line 473) | DISPSTAT_HBLANK_Pos = 0x1
constant DISPSTAT_HBLANK_ENABLE (line 474) | DISPSTAT_HBLANK_ENABLE = 0x1
constant DISPSTAT_HBLANK_DISABLE (line 475) | DISPSTAT_HBLANK_DISABLE = 0x0
constant DISPSTAT_VCOUNTER_Pos (line 478) | DISPSTAT_VCOUNTER_Pos = 0x2
constant DISPSTAT_VCOUNTER_MATCH (line 479) | DISPSTAT_VCOUNTER_MATCH = 0x1
constant DISPSTAT_VCOUNTER_NOMATCH (line 480) | DISPSTAT_VCOUNTER_NOMATCH = 0x0
constant DISPSTAT_VBLANK_IRQ_Pos (line 483) | DISPSTAT_VBLANK_IRQ_Pos = 0x3
constant DISPSTAT_VBLANK_IRQ_ENABLE (line 484) | DISPSTAT_VBLANK_IRQ_ENABLE = 0x1
constant DISPSTAT_VBLANK_IRQ_DISABLE (line 485) | DISPSTAT_VBLANK_IRQ_DISABLE = 0x0
constant DISPSTAT_HBLANK_IRQ_Pos (line 488) | DISPSTAT_HBLANK_IRQ_Pos = 0x4
constant DISPSTAT_HBLANK_IRQ_ENABLE (line 489) | DISPSTAT_HBLANK_IRQ_ENABLE = 0x1
constant DISPSTAT_HBLANK_IRQ_DISABLE (line 490) | DISPSTAT_HBLANK_IRQ_DISABLE = 0x0
constant DISPSTAT_VCOUNTER_IRQ_Pos (line 493) | DISPSTAT_VCOUNTER_IRQ_Pos = 0x5
constant DISPSTAT_VCOUNTER_IRQ_ENABLE (line 494) | DISPSTAT_VCOUNTER_IRQ_ENABLE = 0x1
constant DISPSTAT_VCOUNTER_IRQ_DISABLE (line 495) | DISPSTAT_VCOUNTER_IRQ_DISABLE = 0x0
constant DISPSTAT_VCOUNT_SETTING_Pos (line 498) | DISPSTAT_VCOUNT_SETTING_Pos = 0x8
constant BGCNT_PRIORITY_Pos (line 502) | BGCNT_PRIORITY_Pos = 0x0
constant BGCNT_PRIORITY_Msk (line 503) | BGCNT_PRIORITY_Msk = 0x3
constant BGCNT_CHAR_BASE_Pos (line 505) | BGCNT_CHAR_BASE_Pos = 0x2
constant BGCNT_CHAR_BASE_Msk (line 506) | BGCNT_CHAR_BASE_Msk = 0x3
constant BGCNT_MOSAIC_Pos (line 508) | BGCNT_MOSAIC_Pos = 0x6
constant BGCNT_MOSAIC_DISABLE (line 509) | BGCNT_MOSAIC_DISABLE = 0x0
constant BGCNT_MOSAIC_ENABLE (line 510) | BGCNT_MOSAIC_ENABLE = 0x1
constant BGCNT_COLORS_Pos (line 512) | BGCNT_COLORS_Pos = 0x7
constant BGCNT_COLORS_16 (line 513) | BGCNT_COLORS_16 = 0x0
constant BGCNT_COLORS_256 (line 514) | BGCNT_COLORS_256 = 0x1
constant BGCNT_BASE_Pos (line 516) | BGCNT_BASE_Pos = 0x8
constant BGCNT_BASE_Msk (line 517) | BGCNT_BASE_Msk = 0x1F
constant BGCNT_OVERFLOW_Pos (line 519) | BGCNT_OVERFLOW_Pos = 0xD
constant BGCNT_OVERFLOW_TRANS (line 520) | BGCNT_OVERFLOW_TRANS = 0x0
constant BGCNT_OVERFLOW_WRAP (line 521) | BGCNT_OVERFLOW_WRAP = 0x1
constant BGCNT_SIZE_Pos (line 523) | BGCNT_SIZE_Pos = 0xE
constant BGCNT_SIZE_Msk (line 524) | BGCNT_SIZE_Msk = 0x3
constant BG_HOFS_Pos (line 528) | BG_HOFS_Pos = 0x0
constant BG_HOFS_Msk (line 529) | BG_HOFS_Msk = 0x1FF
constant BG_VOFS_Pos (line 531) | BG_VOFS_Pos = 0x0
constant BG_VOFS_Msk (line 532) | BG_VOFS_Msk = 0x1FF
constant TIMERCNT_PRESCALER_Pos (line 539) | TIMERCNT_PRESCALER_Pos = 0x0
constant TIMERCNT_PRESCALER_Msk (line 541) | TIMERCNT_PRESCALER_Msk = 0x2
constant TIMERCNT_PRESCALER_1 (line 543) | TIMERCNT_PRESCALER_1 = 0x0
constant TIMERCNT_PRESCALER_64 (line 545) | TIMERCNT_PRESCALER_64 = 0x1
constant TIMERCNT_PRESCALER_256 (line 547) | TIMERCNT_PRESCALER_256 = 0x2
constant TIMERCNT_PRESCALER_1024 (line 549) | TIMERCNT_PRESCALER_1024 = 0x3
constant TIMERCNT_COUNTUP_TIMING_Pos (line 553) | TIMERCNT_COUNTUP_TIMING_Pos = 0x2
constant TIMERCNT_COUNTUP_TIMING_NORMAL (line 554) | TIMERCNT_COUNTUP_TIMING_NORMAL = 0x0
constant TIMERCNT_COUNTUP_TIMING_ENABLED (line 555) | TIMERCNT_COUNTUP_TIMING_ENABLED = 0x1
constant TIMERCNT_TIMER_IRQ_ENABLED_Pos (line 557) | TIMERCNT_TIMER_IRQ_ENABLED_Pos = 0x06
constant TIMERCNT_TIMER_IRQ_ENABLED (line 558) | TIMERCNT_TIMER_IRQ_ENABLED = 0x01
constant TIMERCNT_TIMER_IRQ_DISABLED (line 559) | TIMERCNT_TIMER_IRQ_DISABLED = 0x00
constant TIMERCNT_TIMER_STARTSTOP_Pos (line 561) | TIMERCNT_TIMER_STARTSTOP_Pos = 0x07
constant TIMERCNT_TIMER_START (line 562) | TIMERCNT_TIMER_START = 0x1
constant TIMERCNT_TIMER_STOP (line 563) | TIMERCNT_TIMER_STOP = 0x0
constant SIOCNT_NORMAL_SC_Pos (line 568) | SIOCNT_NORMAL_SC_Pos = 0x0
constant SIOCNT_NORMAL_SC_INTERNAL (line 569) | SIOCNT_NORMAL_SC_INTERNAL = 0x1
constant SIOCNT_NORMAL_SC_EXTERNAL (line 570) | SIOCNT_NORMAL_SC_EXTERNAL = 0x0
constant SIOCNT_NORMAL_SCSPEED_Pos (line 572) | SIOCNT_NORMAL_SCSPEED_Pos = 0x1
constant SIOCNT_NORMAL_SCSPEED_256K (line 573) | SIOCNT_NORMAL_SCSPEED_256K = 0x0
constant SIOCNT_NORMAL_SCSPEED_2M (line 574) | SIOCNT_NORMAL_SCSPEED_2M = 0x1
constant SIOCNT_NORMAL_SCSTATE_Pos (line 576) | SIOCNT_NORMAL_SCSTATE_Pos = 0x2
constant SIOCNT_NORMAL_SCSTATE_LOW (line 577) | SIOCNT_NORMAL_SCSTATE_LOW = 0x0
constant SIOCNT_NORMAL_SCSTATE_HIGH (line 578) | SIOCNT_NORMAL_SCSTATE_HIGH = 0x1
constant SIOCNT_NORMAL_SO_INACTIVE_Pos (line 580) | SIOCNT_NORMAL_SO_INACTIVE_Pos = 0x3
constant SIOCNT_NORMAL_SO_INACTIVE_LOW (line 581) | SIOCNT_NORMAL_SO_INACTIVE_LOW = 0x0
constant SIOCNT_NORMAL_SO_INACTIVE_HIGH (line 582) | SIOCNT_NORMAL_SO_INACTIVE_HIGH = 0x1
constant SIOCNT_NORMAL_START_Pos (line 584) | SIOCNT_NORMAL_START_Pos = 0x7
constant SIOCNT_NORMAL_START_READY (line 585) | SIOCNT_NORMAL_START_READY = 0x0
constant SIOCNT_NORMAL_START_ACTIVE (line 586) | SIOCNT_NORMAL_START_ACTIVE = 0x1
constant SIOCNT_NORMAL_LEN_Pos (line 588) | SIOCNT_NORMAL_LEN_Pos = 0xC
constant SIOCNT_NORMAL_LEN8 (line 589) | SIOCNT_NORMAL_LEN8 = 0x0
constant SIOCNT_NORMAL_LEN32 (line 590) | SIOCNT_NORMAL_LEN32 = 0x1
constant SIOCNT_NORMAL_MODE_Pos (line 592) | SIOCNT_NORMAL_MODE_Pos = 0xD
constant SIOCNT_NORMAL_MODE (line 593) | SIOCNT_NORMAL_MODE = 0x0
constant SIOCNT_MULTI_BR_Pos (line 596) | SIOCNT_MULTI_BR_Pos = 0x0
constant SIOCNT_MULTI_BR_Msk (line 597) | SIOCNT_MULTI_BR_Msk = 0x3
constant SIOCNT_MULTI_BR_9600 (line 598) | SIOCNT_MULTI_BR_9600 = 0x0
constant SIOCNT_MULTI_BR_38400 (line 599) | SIOCNT_MULTI_BR_38400 = 0x1
constant SIOCNT_MULTI_BR_57600 (line 600) | SIOCNT_MULTI_BR_57600 = 0x2
constant SIOCNT_MULTI_BR_115200 (line 601) | SIOCNT_MULTI_BR_115200 = 0x3
constant SIOCNT_MULTI_SI_Pos (line 603) | SIOCNT_MULTI_SI_Pos = 0x2
constant SIOCNT_MULTI_SI_PARENT (line 604) | SIOCNT_MULTI_SI_PARENT = 0x0
constant SIOCNT_MULTI_SI_CHILD (line 605) | SIOCNT_MULTI_SI_CHILD = 0x1
constant SIOCNT_MULTI_SD_Pos (line 607) | SIOCNT_MULTI_SD_Pos = 0x3
constant SIOCNT_MULTI_SD_BAD (line 608) | SIOCNT_MULTI_SD_BAD = 0x0
constant SIOCNT_MULTI_SD_READY (line 609) | SIOCNT_MULTI_SD_READY = 0x1
constant SIOCNT_MULTI_ID_Pos (line 611) | SIOCNT_MULTI_ID_Pos = 0x4
constant SIOCNT_MULTI_ID_Msk (line 612) | SIOCNT_MULTI_ID_Msk = 0x3
constant SIOCNT_MULTI_ID_PARENT (line 613) | SIOCNT_MULTI_ID_PARENT = 0x0
constant SIOCNT_MULTI_ID_CHILD1 (line 614) | SIOCNT_MULTI_ID_CHILD1 = 0x1
constant SIOCNT_MULTI_ID_CHILD2 (line 615) | SIOCNT_MULTI_ID_CHILD2 = 0x2
constant SIOCNT_MULTI_ID_CHILD3 (line 616) | SIOCNT_MULTI_ID_CHILD3 = 0x3
constant SIOCNT_MULTI_ERR_Pos (line 618) | SIOCNT_MULTI_ERR_Pos = 0x6
constant SIOCNT_MULTI_ERR_NORMAL (line 619) | SIOCNT_MULTI_ERR_NORMAL = 0x0
constant SIOCNT_MULTI_ERR_ERROR (line 620) | SIOCNT_MULTI_ERR_ERROR = 0x1
constant SIOCNT_MULTI_STARTBUSY_Pos (line 622) | SIOCNT_MULTI_STARTBUSY_Pos = 0x7
constant SIOCNT_MULTI_STARTBUSY_INACTIVE (line 623) | SIOCNT_MULTI_STARTBUSY_INACTIVE = 0x0
constant SIOCNT_MULTI_STARTBUSY_STARTBUSY (line 624) | SIOCNT_MULTI_STARTBUSY_STARTBUSY = 0x1
constant SIOCNT_MULTI_MODE_Pos (line 626) | SIOCNT_MULTI_MODE_Pos = 0xC
constant SIOCNT_MULTI_MODE_Msk (line 627) | SIOCNT_MULTI_MODE_Msk = 0x3
constant SIOCNT_MULTI_MODE (line 628) | SIOCNT_MULTI_MODE = 0x01
constant SIOCNT_UART_BR_Pos (line 631) | SIOCNT_UART_BR_Pos = 0x0
constant SIOCNT_UART_BR_Msk (line 632) | SIOCNT_UART_BR_Msk = 0x3
constant SIOCNT_UART_BR_9600 (line 633) | SIOCNT_UART_BR_9600 = 0x0
constant SIOCNT_UART_BR_38400 (line 634) | SIOCNT_UART_BR_38400 = 0x1
constant SIOCNT_UART_BR_57600 (line 635) | SIOCNT_UART_BR_57600 = 0x2
constant SIOCNT_UART_BR_115200 (line 636) | SIOCNT_UART_BR_115200 = 0x3
constant SIOCNT_UART_CTS_Pos (line 638) | SIOCNT_UART_CTS_Pos = 0x2
constant SIOCNT_UART_CTS_ALWAYS (line 639) | SIOCNT_UART_CTS_ALWAYS = 0x0
constant SIOCNT_UART_CTS_SENDLOW (line 640) | SIOCNT_UART_CTS_SENDLOW = 0x1
constant SIOCNT_UART_PARITY_Pos (line 642) | SIOCNT_UART_PARITY_Pos = 0x3
constant SIOCNT_UART_PARITY_EVEN (line 643) | SIOCNT_UART_PARITY_EVEN = 0x0
constant SIOCNT_UART_PARITY_ODD (line 644) | SIOCNT_UART_PARITY_ODD = 0x1
constant SIOCNT_UART_SEND_Pos (line 646) | SIOCNT_UART_SEND_Pos = 0x4
constant SIOCNT_UART_SEND_NOTFULL (line 647) | SIOCNT_UART_SEND_NOTFULL = 0x0
constant SIOCNT_UART_SEND_FULL (line 648) | SIOCNT_UART_SEND_FULL = 0x1
constant SIOCNT_UART_REC_Pos (line 650) | SIOCNT_UART_REC_Pos = 0x5
constant SIOCNT_UART_REC_NOTEMPTY (line 651) | SIOCNT_UART_REC_NOTEMPTY = 0x0
constant SIOCNT_UART_REC_EMPTY (line 652) | SIOCNT_UART_REC_EMPTY = 0x1
constant SIOCNT_UART_ERR_Pos (line 654) | SIOCNT_UART_ERR_Pos = 0x6
constant SIOCNT_UART_ERR_NOERROR (line 655) | SIOCNT_UART_ERR_NOERROR = 0x0
constant SIOCNT_UART_ERR_ERROR (line 656) | SIOCNT_UART_ERR_ERROR = 0x1
constant SIOCNT_UART_DATALEN_Pos (line 658) | SIOCNT_UART_DATALEN_Pos = 0x7
constant SIOCNT_UART_DATALEN_7 (line 659) | SIOCNT_UART_DATALEN_7 = 0x0
constant SIOCNT_UART_DATALEN_8 (line 660) | SIOCNT_UART_DATALEN_8 = 0x1
constant SIOCNT_UART_FIFO_Pos (line 662) | SIOCNT_UART_FIFO_Pos = 0x8
constant SIOCNT_UART_FIFO_DISABLE (line 663) | SIOCNT_UART_FIFO_DISABLE = 0x0
constant SIOCNT_UART_FIFO_ENABLE (line 664) | SIOCNT_UART_FIFO_ENABLE = 0x1
constant SIOCNT_UART_PARITY_ENABLE_Pos (line 666) | SIOCNT_UART_PARITY_ENABLE_Pos = 0x9
constant SIOCNT_UART_PARITY_DISABLE (line 667) | SIOCNT_UART_PARITY_DISABLE = 0x0
constant SIOCNT_UART_PARITY_ENABLE (line 668) | SIOCNT_UART_PARITY_ENABLE = 0x1
constant SIOCNT_UART_SEND_ENABLE_Pos (line 670) | SIOCNT_UART_SEND_ENABLE_Pos = 0xA
constant SIOCNT_UART_SEND_DISABLE (line 671) | SIOCNT_UART_SEND_DISABLE = 0x0
constant SIOCNT_UART_SEND_ENABLE (line 672) | SIOCNT_UART_SEND_ENABLE = 0x1
constant SIOCNT_UART_REC_ENABLE_Pos (line 674) | SIOCNT_UART_REC_ENABLE_Pos = 0xB
constant SIOCNT_UART_REC_DISABLE (line 675) | SIOCNT_UART_REC_DISABLE = 0x0
constant SIOCNT_UART_REC_ENABLE (line 676) | SIOCNT_UART_REC_ENABLE = 0x1
constant SIOCNT_UART_MODE_Pos (line 678) | SIOCNT_UART_MODE_Pos = 0xC
constant SIOCNT_UART_MODE_Msk (line 679) | SIOCNT_UART_MODE_Msk = 0x3
constant SIOCNT_UART_MODE (line 680) | SIOCNT_UART_MODE = 0x11
constant SIOCNT_IRQ_Pos (line 683) | SIOCNT_IRQ_Pos = 0xE
constant SIOCNT_IRQ_DISABLE (line 684) | SIOCNT_IRQ_DISABLE = 0x0
constant SIOCNT_IRQ_ENABLE (line 685) | SIOCNT_IRQ_ENABLE = 0x1
constant SIO_RCNT_MODE_Pos (line 689) | SIO_RCNT_MODE_Pos = 0xF
constant SIO_RCNT_MODE_NORMAL (line 690) | SIO_RCNT_MODE_NORMAL = 0x0
constant SIO_RCNT_MODE_MULTI (line 691) | SIO_RCNT_MODE_MULTI = 0x0
constant SIO_RCNT_MODE_UART (line 692) | SIO_RCNT_MODE_UART = 0x0
constant KEYINPUT_PRESSED (line 698) | KEYINPUT_PRESSED = 0x0
constant KEYINPUT_RELEASED (line 699) | KEYINPUT_RELEASED = 0x1
constant KEYINPUT_BUTTON_A_Pos (line 700) | KEYINPUT_BUTTON_A_Pos = 0x0
constant KEYINPUT_BUTTON_B_Pos (line 701) | KEYINPUT_BUTTON_B_Pos = 0x1
constant KEYINPUT_BUTTON_SELECT_Pos (line 702) | KEYINPUT_BUTTON_SELECT_Pos = 0x2
constant KEYINPUT_BUTTON_START_Pos (line 703) | KEYINPUT_BUTTON_START_Pos = 0x3
constant KEYINPUT_BUTTON_RIGHT_Pos (line 704) | KEYINPUT_BUTTON_RIGHT_Pos = 0x4
constant KEYINPUT_BUTTON_LEFT_Pos (line 705) | KEYINPUT_BUTTON_LEFT_Pos = 0x5
constant KEYINPUT_BUTTON_UP_Pos (line 706) | KEYINPUT_BUTTON_UP_Pos = 0x6
constant KEYINPUT_BUTTON_DOWN_Pos (line 707) | KEYINPUT_BUTTON_DOWN_Pos = 0x7
constant KEYINPUT_BUTTON_R_Pos (line 708) | KEYINPUT_BUTTON_R_Pos = 0x8
constant KEYINPUT_BUTTON_L_Pos (line 709) | KEYINPUT_BUTTON_L_Pos = 0x9
constant KEYCNT_IGNORE (line 712) | KEYCNT_IGNORE = 0x0
constant KEYCNT_SELECT (line 713) | KEYCNT_SELECT = 0x1
constant KEYCNT_BUTTON_A_Pos (line 714) | KEYCNT_BUTTON_A_Pos = 0x0
constant KEYCNT_BUTTON_B_Pos (line 715) | KEYCNT_BUTTON_B_Pos = 0x1
constant KEYCNT_BUTTON_SELECT_Pos (line 716) | KEYCNT_BUTTON_SELECT_Pos = 0x2
constant KEYCNT_BUTTON_START_Pos (line 717) | KEYCNT_BUTTON_START_Pos = 0x3
constant KEYCNT_BUTTON_RIGHT_Pos (line 718) | KEYCNT_BUTTON_RIGHT_Pos = 0x4
constant KEYCNT_BUTTON_LEFT_Pos (line 719) | KEYCNT_BUTTON_LEFT_Pos = 0x5
constant KEYCNT_BUTTON_UP_Pos (line 720) | KEYCNT_BUTTON_UP_Pos = 0x6
constant KEYCNT_BUTTON_DOWN_Pos (line 721) | KEYCNT_BUTTON_DOWN_Pos = 0x7
constant KEYCNT_BUTTON_R_Pos (line 722) | KEYCNT_BUTTON_R_Pos = 0x8
constant KEYCNT_BUTTON_L_Pos (line 723) | KEYCNT_BUTTON_L_Pos = 0x9
constant KEYCNT_BUTTON_IRQ_DISABLE (line 724) | KEYCNT_BUTTON_IRQ_DISABLE = 0x0
constant KEYCNT_BUTTON_IRQ_ENABLE (line 725) | KEYCNT_BUTTON_IRQ_ENABLE = 0x1
constant KEYCNT_BUTTON_IRQ_ENABLE_Pos (line 726) | KEYCNT_BUTTON_IRQ_ENABLE_Pos = 0xE
constant KEYCNT_BUTTON_IRQ_COND_OR (line 727) | KEYCNT_BUTTON_IRQ_COND_OR = 0x0
constant KEYCNT_BUTTON_IRQ_COND_AND (line 728) | KEYCNT_BUTTON_IRQ_COND_AND = 0x1
constant KEYCNT_BUTTON_IRQ_COND_Pos (line 729) | KEYCNT_BUTTON_IRQ_COND_Pos = 0xF
constant INTERRUPT_IE_ENABLED (line 735) | INTERRUPT_IE_ENABLED = 0x1
constant INTERRUPT_IE_DISABLED (line 736) | INTERRUPT_IE_DISABLED = 0x0
constant INTERRUPT_IE_VBLANK_Pos (line 737) | INTERRUPT_IE_VBLANK_Pos = 0x0
constant INTERRUPT_IE_HBLANK_Pos (line 738) | INTERRUPT_IE_HBLANK_Pos = 0x1
constant INTERRUPT_IE_VCOUNTER_MATCH_Pos (line 739) | INTERRUPT_IE_VCOUNTER_MATCH_Pos = 0x2
constant INTERRUPT_IE_TIMER0_OVERFLOW_Pos (line 740) | INTERRUPT_IE_TIMER0_OVERFLOW_Pos = 0x3
constant INTERRUPT_IE_TIMER1_OVERFLOW_Pos (line 741) | INTERRUPT_IE_TIMER1_OVERFLOW_Pos = 0x4
constant INTERRUPT_IE_TIMER2_OVERFLOW_Pos (line 742) | INTERRUPT_IE_TIMER2_OVERFLOW_Pos = 0x5
constant INTERRUPT_IE_TIMER3_OVERFLOW_Pos (line 743) | INTERRUPT_IE_TIMER3_OVERFLOW_Pos = 0x6
constant INTERRUPT_IE_SERIAL_Pos (line 744) | INTERRUPT_IE_SERIAL_Pos = 0x7
constant INTERRUPT_IE_DMA0_Pos (line 745) | INTERRUPT_IE_DMA0_Pos = 0x8
constant INTERRUPT_IE_DMA1_Pos (line 746) | INTERRUPT_IE_DMA1_Pos = 0x9
constant INTERRUPT_IE_DMA2_Pos (line 747) | INTERRUPT_IE_DMA2_Pos = 0xA
constant INTERRUPT_IE_DMA3_Pos (line 748) | INTERRUPT_IE_DMA3_Pos = 0xB
constant INTERRUPT_IE_KEYPAD_Pos (line 749) | INTERRUPT_IE_KEYPAD_Pos = 0xC
constant INTERRUPT_IE_GAMPAK_Pos (line 750) | INTERRUPT_IE_GAMPAK_Pos = 0xD
constant INTERRUPT_IF_ENABLED (line 753) | INTERRUPT_IF_ENABLED = 0x1
constant INTERRUPT_IF_DISABLED (line 754) | INTERRUPT_IF_DISABLED = 0x0
constant INTERRUPT_IF_VBLANK_Pos (line 755) | INTERRUPT_IF_VBLANK_Pos = 0x0
constant INTERRUPT_IF_HBLANK_Pos (line 756) | INTERRUPT_IF_HBLANK_Pos = 0x1
constant INTERRUPT_IF_VCOUNTER_MATCH_Pos (line 757) | INTERRUPT_IF_VCOUNTER_MATCH_Pos = 0x2
constant INTERRUPT_IF_TIMER0_OVERFLOW_Pos (line 758) | INTERRUPT_IF_TIMER0_OVERFLOW_Pos = 0x3
constant INTERRUPT_IF_TIMER1_OVERFLOW_Pos (line 759) | INTERRUPT_IF_TIMER1_OVERFLOW_Pos = 0x4
constant INTERRUPT_IF_TIMER2_OVERFLOW_Pos (line 760) | INTERRUPT_IF_TIMER2_OVERFLOW_Pos = 0x5
constant INTERRUPT_IF_TIMER3_OVERFLOW_Pos (line 761) | INTERRUPT_IF_TIMER3_OVERFLOW_Pos = 0x6
constant INTERRUPT_IF_SERIAL_Pos (line 762) | INTERRUPT_IF_SERIAL_Pos = 0x7
constant INTERRUPT_IF_DMA0_Pos (line 763) | INTERRUPT_IF_DMA0_Pos = 0x8
constant INTERRUPT_IF_DMA1_Pos (line 764) | INTERRUPT_IF_DMA1_Pos = 0x9
constant INTERRUPT_IF_DMA2_Pos (line 765) | INTERRUPT_IF_DMA2_Pos = 0xA
constant INTERRUPT_IF_DMA3_Pos (line 766) | INTERRUPT_IF_DMA3_Pos = 0xB
constant INTERRUPT_IF_KEYPAD_Pos (line 767) | INTERRUPT_IF_KEYPAD_Pos = 0xC
constant INTERRUPT_IF_GAMPAK_Pos (line 768) | INTERRUPT_IF_GAMPAK_Pos = 0xD
constant OAMOBJ_ATT0_Y_Pos (line 772) | OAMOBJ_ATT0_Y_Pos = 0x0
constant OAMOBJ_ATT0_Y_Msk (line 773) | OAMOBJ_ATT0_Y_Msk = 0xFF
constant OAMOBJ_ATT0_OM_Pos (line 775) | OAMOBJ_ATT0_OM_Pos = 0x8
constant OAMOBJ_ATT0_OM_Msk (line 776) | OAMOBJ_ATT0_OM_Msk = 0x3
constant OAMOBJ_ATT0_OM_REG (line 777) | OAMOBJ_ATT0_OM_REG = 0x0
constant OAMOBJ_ATT0_OM_AFF (line 778) | OAMOBJ_ATT0_OM_AFF = 0x1
constant OAMOBJ_ATT0_OM_HIDE (line 779) | OAMOBJ_ATT0_OM_HIDE = 0x2
constant OAMOBJ_ATT0_OM_DBL (line 780) | OAMOBJ_ATT0_OM_DBL = 0x3
constant OAMOBJ_ATT0_GM_Pos (line 782) | OAMOBJ_ATT0_GM_Pos = 0xA
constant OAMOBJ_ATT0_GM_Msk (line 783) | OAMOBJ_ATT0_GM_Msk = 0x3
constant OAMOBJ_ATT0_GM_REG (line 784) | OAMOBJ_ATT0_GM_REG = 0x0
constant OAMOBJ_ATT0_GM_BLEND (line 785) | OAMOBJ_ATT0_GM_BLEND = 0x1
constant OAMOBJ_ATT0_GM_WIN (line 786) | OAMOBJ_ATT0_GM_WIN = 0x2
constant OAMOBJ_ATT0_MOSAIC_Pos (line 788) | OAMOBJ_ATT0_MOSAIC_Pos = 0xC
constant OAMOBJ_ATT0_MOSAIC_DISABLE (line 789) | OAMOBJ_ATT0_MOSAIC_DISABLE = 0x0
constant OAMOBJ_ATT0_MOSAIC_ENABLE (line 790) | OAMOBJ_ATT0_MOSAIC_ENABLE = 0x1
constant OAMOBJ_ATT0_COLOR_Pos (line 792) | OAMOBJ_ATT0_COLOR_Pos = 0xD
constant OAMOBJ_ATT0_COLOR_4BPP (line 793) | OAMOBJ_ATT0_COLOR_4BPP = 0x0
constant OAMOBJ_ATT0_COLOR_8BPP (line 794) | OAMOBJ_ATT0_COLOR_8BPP = 0x1
constant OAMOBJ_ATT0_SH_Pos (line 796) | OAMOBJ_ATT0_SH_Pos = 0xE
constant OAMOBJ_ATT0_SH_Msk (line 797) | OAMOBJ_ATT0_SH_Msk = 0x3
constant OAMOBJ_ATT0_SH_SQUARE (line 798) | OAMOBJ_ATT0_SH_SQUARE = 0x0
constant OAMOBJ_ATT0_SH_WIDE (line 799) | OAMOBJ_ATT0_SH_WIDE = 0x1
constant OAMOBJ_ATT0_SH_TALL (line 800) | OAMOBJ_ATT0_SH_TALL = 0x2
constant OAMOBJ_ATT1_X_Pos (line 802) | OAMOBJ_ATT1_X_Pos = 0x0
constant OAMOBJ_ATT1_X_Msk (line 803) | OAMOBJ_ATT1_X_Msk = 0xFF
constant OAMOBJ_ATT1_AID_Pos (line 805) | OAMOBJ_ATT1_AID_Pos = 0x9
constant OAMOBJ_ATT1_AID_Msk (line 806) | OAMOBJ_ATT1_AID_Msk = 0x1F
constant OAMOBJ_ATT1_HF_Pos (line 808) | OAMOBJ_ATT1_HF_Pos = 0xC
constant OAMOBJ_ATT1_HF_NOFLIP (line 809) | OAMOBJ_ATT1_HF_NOFLIP = 0x0
constant OAMOBJ_ATT1_HF_FLIP (line 810) | OAMOBJ_ATT1_HF_FLIP = 0x1
constant OAMOBJ_ATT1_VF_Pos (line 812) | OAMOBJ_ATT1_VF_Pos = 0xD
constant OAMOBJ_ATT1_VF_NOFLIP (line 813) | OAMOBJ_ATT1_VF_NOFLIP = 0x0
constant OAMOBJ_ATT1_VF_FLIP (line 814) | OAMOBJ_ATT1_VF_FLIP = 0x1
constant OAMOBJ_ATT1_SZ_Pos (line 816) | OAMOBJ_ATT1_SZ_Pos = 0xE
constant OAMOBJ_ATT1_SZ_Msk (line 817) | OAMOBJ_ATT1_SZ_Msk = 0x3
constant OAMOBJ_ATT2_TID_Pos (line 819) | OAMOBJ_ATT2_TID_Pos = 0x0
constant OAMOBJ_ATT2_TID_Msk (line 820) | OAMOBJ_ATT2_TID_Msk = 0xFF
constant OAMOBJ_ATT2_PR_Pos (line 822) | OAMOBJ_ATT2_PR_Pos = 0xA
constant OAMOBJ_ATT2_PR_Msk (line 823) | OAMOBJ_ATT2_PR_Msk = 0x3
constant OAMOBJ_ATT2_PB_Pos (line 825) | OAMOBJ_ATT2_PB_Pos = 0xC
constant OAMOBJ_ATT2_PB_Msk (line 826) | OAMOBJ_ATT2_PB_Msk = 0xF
FILE: src/device/riscv/csr.go
type CSR (line 8) | type CSR
method Get (line 11) | func (csr CSR) Get() uintptr
method Set (line 14) | func (csr CSR) Set(uintptr)
method SetBits (line 17) | func (csr CSR) SetBits(uintptr) uintptr
method ClearBits (line 21) | func (csr CSR) ClearBits(uintptr) uintptr
constant USTATUS (line 29) | USTATUS CSR = 0x000
constant UIE (line 30) | UIE CSR = 0x004
constant UTVEC (line 31) | UTVEC CSR = 0x005
constant USCRATCH (line 34) | USCRATCH CSR = 0x040
constant UEPC (line 35) | UEPC CSR = 0x041
constant UCAUSE (line 36) | UCAUSE CSR = 0x042
constant UTVAL (line 37) | UTVAL CSR = 0x043
constant UIP (line 38) | UIP CSR = 0x044
constant FFLAGS (line 41) | FFLAGS CSR = 0x001
constant FRM (line 42) | FRM CSR = 0x002
constant FCSR (line 43) | FCSR CSR = 0x003
constant CYCLE (line 46) | CYCLE CSR = 0xC00
constant TIME (line 47) | TIME CSR = 0xC01
constant INSTRET (line 48) | INSTRET CSR = 0xC02
constant HPMCOUNTER3 (line 49) | HPMCOUNTER3 CSR = 0xC03
constant HPMCOUNTER4 (line 50) | HPMCOUNTER4 CSR = 0xC04
constant HPMCOUNTER5 (line 51) | HPMCOUNTER5 CSR = 0xC05
constant HPMCOUNTER6 (line 52) | HPMCOUNTER6 CSR = 0xC06
constant HPMCOUNTER7 (line 53) | HPMCOUNTER7 CSR = 0xC07
constant HPMCOUNTER8 (line 54) | HPMCOUNTER8 CSR = 0xC08
constant HPMCOUNTER9 (line 55) | HPMCOUNTER9 CSR = 0xC09
constant HPMCOUNTER10 (line 56) | HPMCOUNTER10 CSR = 0xC0A
constant HPMCOUNTER11 (line 57) | HPMCOUNTER11 CSR = 0xC0B
constant HPMCOUNTER12 (line 58) | HPMCOUNTER12 CSR = 0xC0C
constant HPMCOUNTER13 (line 59) | HPMCOUNTER13 CSR = 0xC0D
constant HPMCOUNTER14 (line 60) | HPMCOUNTER14 CSR = 0xC0E
constant HPMCOUNTER15 (line 61) | HPMCOUNTER15 CSR = 0xC0F
constant HPMCOUNTER16 (line 62) | HPMCOUNTER16 CSR = 0xC10
constant HPMCOUNTER17 (line 63) | HPMCOUNTER17 CSR = 0xC11
constant HPMCOUNTER18 (line 64) | HPMCOUNTER18 CSR = 0xC12
constant HPMCOUNTER19 (line 65) | HPMCOUNTER19 CSR = 0xC13
constant HPMCOUNTER20 (line 66) | HPMCOUNTER20 CSR = 0xC14
constant HPMCOUNTER21 (line 67) | HPMCOUNTER21 CSR = 0xC15
constant HPMCOUNTER22 (line 68) | HPMCOUNTER22 CSR = 0xC16
constant HPMCOUNTER23 (line 69) | HPMCOUNTER23 CSR = 0xC17
constant HPMCOUNTER24 (line 70) | HPMCOUNTER24 CSR = 0xC18
constant HPMCOUNTER25 (line 71) | HPMCOUNTER25 CSR = 0xC19
constant HPMCOUNTER26 (line 72) | HPMCOUNTER26 CSR = 0xC1A
constant HPMCOUNTER27 (line 73) | HPMCOUNTER27 CSR = 0xC1B
constant HPMCOUNTER28 (line 74) | HPMCOUNTER28 CSR = 0xC1C
constant HPMCOUNTER29 (line 75) | HPMCOUNTER29 CSR = 0xC1D
constant HPMCOUNTER30 (line 76) | HPMCOUNTER30 CSR = 0xC1E
constant HPMCOUNTER31 (line 77) | HPMCOUNTER31 CSR = 0xC1F
constant CYCLEH (line 78) | CYCLEH CSR = 0xC80
constant TIMEH (line 79) | TIMEH CSR = 0xC81
constant INSTRETH (line 80) | INSTRETH CSR = 0xC82
constant HPMCOUNTER3H (line 81) | HPMCOUNTER3H CSR = 0xC83
constant HPMCOUNTER4H (line 82) | HPMCOUNTER4H CSR = 0xC84
constant HPMCOUNTER5H (line 83) | HPMCOUNTER5H CSR = 0xC85
constant HPMCOUNTER6H (line 84) | HPMCOUNTER6H CSR = 0xC86
constant HPMCOUNTER7H (line 85) | HPMCOUNTER7H CSR = 0xC87
constant HPMCOUNTER8H (line 86) | HPMCOUNTER8H CSR = 0xC88
constant HPMCOUNTER9H (line 87) | HPMCOUNTER9H CSR = 0xC89
constant HPMCOUNTER10H (line 88) | HPMCOUNTER10H CSR = 0xC8A
constant HPMCOUNTER11H (line 89) | HPMCOUNTER11H CSR = 0xC8B
constant HPMCOUNTER12H (line 90) | HPMCOUNTER12H CSR = 0xC8C
constant HPMCOUNTER13H (line 91) | HPMCOUNTER13H CSR = 0xC8D
constant HPMCOUNTER14H (line 92) | HPMCOUNTER14H CSR = 0xC8E
constant HPMCOUNTER15H (line 93) | HPMCOUNTER15H CSR = 0xC8F
constant HPMCOUNTER16H (line 94) | HPMCOUNTER16H CSR = 0xC90
constant HPMCOUNTER17H (line 95) | HPMCOUNTER17H CSR = 0xC91
constant HPMCOUNTER18H (line 96) | HPMCOUNTER18H CSR = 0xC92
constant HPMCOUNTER19H (line 97) | HPMCOUNTER19H CSR = 0xC93
constant HPMCOUNTER20H (line 98) | HPMCOUNTER20H CSR = 0xC94
constant HPMCOUNTER21H (line 99) | HPMCOUNTER21H CSR = 0xC95
constant HPMCOUNTER22H (line 100) | HPMCOUNTER22H CSR = 0xC96
constant HPMCOUNTER23H (line 101) | HPMCOUNTER23H CSR = 0xC97
constant HPMCOUNTER24H (line 102) | HPMCOUNTER24H CSR = 0xC98
constant HPMCOUNTER25H (line 103) | HPMCOUNTER25H CSR = 0xC99
constant HPMCOUNTER26H (line 104) | HPMCOUNTER26H CSR = 0xC9A
constant HPMCOUNTER27H (line 105) | HPMCOUNTER27H CSR = 0xC9B
constant HPMCOUNTER28H (line 106) | HPMCOUNTER28H CSR = 0xC9C
constant HPMCOUNTER29H (line 107) | HPMCOUNTER29H CSR = 0xC9D
constant HPMCOUNTER30H (line 108) | HPMCOUNTER30H CSR = 0xC9E
constant HPMCOUNTER31H (line 109) | HPMCOUNTER31H CSR = 0xC9F
constant SSTATUS (line 112) | SSTATUS CSR = 0x100
constant SEDELEG (line 113) | SEDELEG CSR = 0x102
constant SIDELEG (line 114) | SIDELEG CSR = 0x103
constant SIE (line 115) | SIE CSR = 0x104
constant STVEC (line 116) | STVEC CSR = 0x105
constant SCOUNTEREN (line 117) | SCOUNTEREN CSR = 0x106
constant SSCRATCH (line 120) | SSCRATCH CSR = 0x140
constant SEPC (line 121) | SEPC CSR = 0x141
constant SCAUSE (line 122) | SCAUSE CSR = 0x142
constant STVAL (line 123) | STVAL CSR = 0x143
constant SIP (line 124) | SIP CSR = 0x144
constant SATP (line 127) | SATP CSR = 0x180
constant MVENDORID (line 130) | MVENDORID CSR = 0xF11
constant MARCHID (line 131) | MARCHID CSR = 0xF12
constant MIMPID (line 132) | MIMPID CSR = 0xF13
constant MHARTID (line 133) | MHARTID CSR = 0xF14
constant MSTATUS (line 136) | MSTATUS CSR = 0x300
constant MISA (line 137) | MISA CSR = 0x301
constant MEDELEG (line 138) | MEDELEG CSR = 0x302
constant MIDELEG (line 139) | MIDELEG CSR = 0x303
constant MIE (line 140) | MIE CSR = 0x304
constant MTVEC (line 141) | MTVEC CSR = 0x305
constant MCOUNTEREN (line 142) | MCOUNTEREN CSR = 0x306
constant MSCRATCH (line 145) | MSCRATCH CSR = 0x340
constant MEPC (line 146) | MEPC CSR = 0x341
constant MCAUSE (line 147) | MCAUSE CSR = 0x342
constant MTVAL (line 148) | MTVAL CSR = 0x343
constant MIP (line 149) | MIP CSR = 0x344
constant PMPCFG0 (line 152) | PMPCFG0 CSR = 0x3A0
constant PMPCFG1 (line 153) | PMPCFG1 CSR = 0x3A1
constant PMPCFG2 (line 154) | PMPCFG2 CSR = 0x3A2
constant PMPCFG3 (line 155) | PMPCFG3 CSR = 0x3A3
constant PMPADDR0 (line 156) | PMPADDR0 CSR = 0x3B0
constant PMPADDR1 (line 157) | PMPADDR1 CSR = 0x3B1
constant PMPADDR2 (line 158) | PMPADDR2 CSR = 0x3B2
constant PMPADDR3 (line 159) | PMPADDR3 CSR = 0x3B3
constant PMPADDR4 (line 160) | PMPADDR4 CSR = 0x3B4
constant PMPADDR5 (line 161) | PMPADDR5 CSR = 0x3B5
constant PMPADDR6 (line 162) | PMPADDR6 CSR = 0x3B6
constant PMPADDR7 (line 163) | PMPADDR7 CSR = 0x3B7
constant PMPADDR8 (line 164) | PMPADDR8 CSR = 0x3B8
constant PMPADDR9 (line 165) | PMPADDR9 CSR = 0x3B9
constant PMPADDR10 (line 166) | PMPADDR10 CSR = 0x3BA
constant PMPADDR11 (line 167) | PMPADDR11 CSR = 0x3BB
constant PMPADDR12 (line 168) | PMPADDR12 CSR = 0x3BC
constant PMPADDR13 (line 169) | PMPADDR13 CSR = 0x3BD
constant PMPADDR14 (line 170) | PMPADDR14 CSR = 0x3BE
constant PMPADDR15 (line 171) | PMPADDR15 CSR = 0x3BF
constant mcycle (line 174) | mcycle CSR = 0xB00
constant minstret (line 175) | minstret CSR = 0xB02
constant MHPMCOUNTER3 (line 176) | MHPMCOUNTER3 CSR = 0xB03
constant MHPMCOUNTER4 (line 177) | MHPMCOUNTER4 CSR = 0xB04
constant MHPMCOUNTER5 (line 178) | MHPMCOUNTER5 CSR = 0xB05
constant MHPMCOUNTER6 (line 179) | MHPMCOUNTER6 CSR = 0xB06
constant MHPMCOUNTER7 (line 180) | MHPMCOUNTER7 CSR = 0xB07
constant MHPMCOUNTER8 (line 181) | MHPMCOUNTER8 CSR = 0xB08
constant MHPMCOUNTER9 (line 182) | MHPMCOUNTER9 CSR = 0xB09
constant MHPMCOUNTER10 (line 183) | MHPMCOUNTER10 CSR = 0xB0A
constant MHPMCOUNTER11 (line 184) | MHPMCOUNTER11 CSR = 0xB0B
constant MHPMCOUNTER12 (line 185) | MHPMCOUNTER12 CSR = 0xB0C
constant MHPMCOUNTER13 (line 186) | MHPMCOUNTER13 CSR = 0xB0D
constant MHPMCOUNTER14 (line 187) | MHPMCOUNTER14 CSR = 0xB0E
constant MHPMCOUNTER15 (line 188) | MHPMCOUNTER15 CSR = 0xB0F
constant MHPMCOUNTER16 (line 189) | MHPMCOUNTER16 CSR = 0xB10
constant MHPMCOUNTER17 (line 190) | MHPMCOUNTER17 CSR = 0xB11
constant MHPMCOUNTER18 (line 191) | MHPMCOUNTER18 CSR = 0xB12
constant MHPMCOUNTER19 (line 192) | MHPMCOUNTER19 CSR = 0xB13
constant MHPMCOUNTER20 (line 193) | MHPMCOUNTER20 CSR = 0xB14
constant MHPMCOUNTER21 (line 194) | MHPMCOUNTER21 CSR = 0xB15
constant MHPMCOUNTER22 (line 195) | MHPMCOUNTER22 CSR = 0xB16
constant MHPMCOUNTER23 (line 196) | MHPMCOUNTER23 CSR = 0xB17
constant MHPMCOUNTER24 (line 197) | MHPMCOUNTER24 CSR = 0xB18
constant MHPMCOUNTER25 (line 198) | MHPMCOUNTER25 CSR = 0xB19
constant MHPMCOUNTER26 (line 199) | MHPMCOUNTER26 CSR = 0xB1A
constant MHPMCOUNTER27 (line 200) | MHPMCOUNTER27 CSR = 0xB1B
constant MHPMCOUNTER28 (line 201) | MHPMCOUNTER28 CSR = 0xB1C
constant MHPMCOUNTER29 (line 202) | MHPMCOUNTER29 CSR = 0xB1D
constant MHPMCOUNTER30 (line 203) | MHPMCOUNTER30 CSR = 0xB1E
constant MHPMCOUNTER31 (line 204) | MHPMCOUNTER31 CSR = 0xB1F
constant MCYCLEH (line 205) | MCYCLEH CSR = 0xB80
constant MINSTRETH (line 206) | MINSTRETH CSR = 0xB82
constant MHPMCOUNTER3H (line 207) | MHPMCOUNTER3H CSR = 0xB83
constant MHPMCOUNTER4H (line 208) | MHPMCOUNTER4H CSR = 0xB84
constant MHPMCOUNTER5H (line 209) | MHPMCOUNTER5H CSR = 0xB85
constant MHPMCOUNTER6H (line 210) | MHPMCOUNTER6H CSR = 0xB86
constant MHPMCOUNTER7H (line 211) | MHPMCOUNTER7H CSR = 0xB87
constant MHPMCOUNTER8H (line 212) | MHPMCOUNTER8H CSR = 0xB88
constant MHPMCOUNTER9H (line 213) | MHPMCOUNTER9H CSR = 0xB89
constant MHPMCOUNTER10H (line 214) | MHPMCOUNTER10H CSR = 0xB8A
constant MHPMCOUNTER11H (line 215) | MHPMCOUNTER11H CSR = 0xB8B
constant MHPMCOUNTER12H (line 216) | MHPMCOUNTER12H CSR = 0xB8C
constant MHPMCOUNTER13H (line 217) | MHPMCOUNTER13H CSR = 0xB8D
constant MHPMCOUNTER14H (line 218) | MHPMCOUNTER14H CSR = 0xB8E
constant MHPMCOUNTER15H (line 219) | MHPMCOUNTER15H CSR = 0xB8F
constant MHPMCOUNTER16H (line 220) | MHPMCOUNTER16H CSR = 0xB90
constant MHPMCOUNTER17H (line 221) | MHPMCOUNTER17H CSR = 0xB91
constant MHPMCOUNTER18H (line 222) | MHPMCOUNTER18H CSR = 0xB92
constant MHPMCOUNTER19H (line 223) | MHPMCOUNTER19H CSR = 0xB93
constant MHPMCOUNTER20H (line 224) | MHPMCOUNTER20H CSR = 0xB94
constant MHPMCOUNTER21H (line 225) | MHPMCOUNTER21H CSR = 0xB95
constant MHPMCOUNTER22H (line 226) | MHPMCOUNTER22H CSR = 0xB96
constant MHPMCOUNTER23H (line 227) | MHPMCOUNTER23H CSR = 0xB97
constant MHPMCOUNTER24H (line 228) | MHPMCOUNTER24H CSR = 0xB98
constant MHPMCOUNTER25H (line 229) | MHPMCOUNTER25H CSR = 0xB99
constant MHPMCOUNTER26H (line 230) | MHPMCOUNTER26H CSR = 0xB9A
constant MHPMCOUNTER27H (line 231) | MHPMCOUNTER27H CSR = 0xB9B
constant MHPMCOUNTER28H (line 232) | MHPMCOUNTER28H CSR = 0xB9C
constant MHPMCOUNTER29H (line 233) | MHPMCOUNTER29H CSR = 0xB9D
constant MHPMCOUNTER30H (line 234) | MHPMCOUNTER30H CSR = 0xB9E
constant MHPMCOUNTER31H (line 235) | MHPMCOUNTER31H CSR = 0xB9F
constant MHPMEVENT4 (line 238) | MHPMEVENT4 CSR = 0x324
constant MHPMEVENT5 (line 239) | MHPMEVENT5 CSR = 0x325
constant MHPMEVENT6 (line 240) | MHPMEVENT6 CSR = 0x326
constant MHPMEVENT7 (line 241) | MHPMEVENT7 CSR = 0x327
constant MHPMEVENT8 (line 242) | MHPMEVENT8 CSR = 0x328
constant MHPMEVENT9 (line 243) | MHPMEVENT9 CSR = 0x329
constant MHPMEVENT10 (line 244) | MHPMEVENT10 CSR = 0x32A
constant MHPMEVENT11 (line 245) | MHPMEVENT11 CSR = 0x32B
constant MHPMEVENT12 (line 246) | MHPMEVENT12 CSR = 0x32C
constant MHPMEVENT13 (line 247) | MHPMEVENT13 CSR = 0x32D
constant MHPMEVENT14 (line 248) | MHPMEVENT14 CSR = 0x32E
constant MHPMEVENT15 (line 249) | MHPMEVENT15 CSR = 0x32F
constant MHPMEVENT16 (line 250) | MHPMEVENT16 CSR = 0x330
constant MHPMEVENT17 (line 251) | MHPMEVENT17 CSR = 0x331
constant MHPMEVENT18 (line 252) | MHPMEVENT18 CSR = 0x332
constant MHPMEVENT19 (line 253) | MHPMEVENT19 CSR = 0x333
constant MHPMEVENT20 (line 254) | MHPMEVENT20 CSR = 0x334
constant MHPMEVENT21 (line 255) | MHPMEVENT21 CSR = 0x335
constant MHPMEVENT22 (line 256) | MHPMEVENT22 CSR = 0x336
constant MHPMEVENT23 (line 257) | MHPMEVENT23 CSR = 0x337
constant MHPMEVENT24 (line 258) | MHPMEVENT24 CSR = 0x338
constant MHPMEVENT25 (line 259) | MHPMEVENT25 CSR = 0x339
constant MHPMEVENT26 (line 260) | MHPMEVENT26 CSR = 0x33A
constant MHPMEVENT27 (line 261) | MHPMEVENT27 CSR = 0x33B
constant MHPMEVENT28 (line 262) | MHPMEVENT28 CSR = 0x33C
constant MHPMEVENT29 (line 263) | MHPMEVENT29 CSR = 0x33D
constant MHPMEVENT30 (line 264) | MHPMEVENT30 CSR = 0x33E
constant MHPMEVENT31 (line 265) | MHPMEVENT31 CSR = 0x33F
constant TSELECT (line 268) | TSELECT CSR = 0x7A0
constant TDATA1 (line 269) | TDATA1 CSR = 0x7A1
constant TDATA2 (line 270) | TDATA2 CSR = 0x7A2
constant TDATA3 (line 271) | TDATA3 CSR = 0x7A3
constant DCSR (line 274) | DCSR CSR = 0x7B0
constant DPC (line 275) | DPC CSR = 0x7B1
constant DSCRATCH (line 276) | DSCRATCH CSR = 0x7B2
constant MSTATUS_SIE (line 282) | MSTATUS_SIE = 1 << 1
constant MSTATUS_MIE (line 283) | MSTATUS_MIE = 1 << 3
constant MSTATUS_SPIE (line 284) | MSTATUS_SPIE = 1 << 5
constant MSTATUS_UBE (line 285) | MSTATUS_UBE = 1 << 6
constant MSTATUS_MPIE (line 286) | MSTATUS_MPIE = 1 << 7
constant MSTATUS_SPP (line 287) | MSTATUS_SPP = 1 << 8
constant MSTATUS_MPRV (line 288) | MSTATUS_MPRV = 1 << 17
constant MSTATUS_SUM (line 289) | MSTATUS_SUM = 1 << 18
constant MSTATUS_MXR (line 290) | MSTATUS_MXR = 1 << 19
constant MSTATUS_TVM (line 291) | MSTATUS_TVM = 1 << 20
constant MSTATUS_TW (line 292) | MSTATUS_TW = 1 << 21
constant MSTATUS_TSR (line 293) | MSTATUS_TSR = 1 << 22
constant MIE_SSIE (line 295) | MIE_SSIE = 1 << 1
constant MIE_MSIE (line 296) | MIE_MSIE = 1 << 3
constant MIE_STIE (line 297) | MIE_STIE = 1 << 5
constant MIE_MTIE (line 298) | MIE_MTIE = 1 << 7
constant MIE_SEIE (line 299) | MIE_SEIE = 1 << 9
constant MIE_MEIE (line 300) | MIE_MEIE = 1 << 11
constant MIP_SSIP (line 302) | MIP_SSIP = 1 << 1
constant MIP_MSIP (line 303) | MIP_MSIP = 1 << 3
constant MIP_STIP (line 304) | MIP_STIP = 1 << 5
constant MIP_MTIP (line 305) | MIP_MTIP = 1 << 7
constant MIP_SEIP (line 306) | MIP_SEIP = 1 << 9
constant MIP_MEIP (line 307) | MIP_MEIP = 1 << 11
constant SupervisorSoftwareInterrupt (line 313) | SupervisorSoftwareInterrupt = 1
constant MachineSoftwareInterrupt (line 314) | MachineSoftwareInterrupt = 3
constant SupervisorTimerInterrupt (line 315) | SupervisorTimerInterrupt = 5
constant MachineTimerInterrupt (line 316) | MachineTimerInterrupt = 7
constant SupervisorExternalInterrupt (line 317) | SupervisorExternalInterrupt = 9
constant MachineExternalInterrupt (line 318) | MachineExternalInterrupt = 11
constant InstructionAddressMisaligned (line 321) | InstructionAddressMisaligned = 0
constant InstructionAccessFault (line 322) | InstructionAccessFault = 1
constant IllegalInstruction (line 323) | IllegalInstruction = 2
constant Breakpoint (line 324) | Breakpoint = 3
constant LoadAddressMisaligned (line 325) | LoadAddressMisaligned = 4
constant LoadAccessFault (line 326) | LoadAccessFault = 5
constant StoreOrAMOAddressMisaligned (line 327) | StoreOrAMOAddressMisaligned = 6
constant StoreOrAMOAccessFault (line 328) | StoreOrAMOAccessFault = 7
constant EnvironmentCallFromUMode (line 329) | EnvironmentCallFromUMode = 8
constant EnvironmentCallFromSMode (line 330) | EnvironmentCallFromSMode = 9
constant EnvironmentCallFromMMode (line 331) | EnvironmentCallFromMMode = 11
constant InstructionPageFault (line 332) | InstructionPageFault = 12
constant LoadPageFault (line 333) | LoadPageFault = 13
constant StoreOrAMOPageFault (line 334) | StoreOrAMOPageFault = 15
FILE: src/device/riscv/riscv.go
function Asm (line 6) | func Asm(asm string)
function AsmFull (line 21) | func AsmFull(asm string, regs map[string]interface{}) uintptr
function DisableInterrupts (line 25) | func DisableInterrupts() uintptr {
function EnableInterrupts (line 35) | func EnableInterrupts(mask uintptr) {
FILE: src/device/tkey/tkey.go
constant TK1_ROM_BASE (line 29) | TK1_ROM_BASE uintptr = 0x00000000
constant TK1_RAM_BASE (line 31) | TK1_RAM_BASE uintptr = 0x40000000
constant TK1_MMIO_BASE (line 33) | TK1_MMIO_BASE uintptr = 0xc0000000
constant TK1_MMIO_TRNG_BASE (line 35) | TK1_MMIO_TRNG_BASE uintptr = 0xc0000000
constant TK1_MMIO_TIMER_BASE (line 37) | TK1_MMIO_TIMER_BASE uintptr = 0xc1000000
constant TK1_MMIO_UDS_BASE (line 39) | TK1_MMIO_UDS_BASE uintptr = 0xc2000000
constant TK1_MMIO_UART_BASE (line 41) | TK1_MMIO_UART_BASE uintptr = 0xc3000000
constant TK1_MMIO_TOUCH_BASE (line 43) | TK1_MMIO_TOUCH_BASE uintptr = 0xc4000000
constant TK1_MMIO_FW_RAM_BASE (line 45) | TK1_MMIO_FW_RAM_BASE uintptr = 0xd0000000
constant TK1_MMIO_TK1_BASE (line 47) | TK1_MMIO_TK1_BASE uintptr = 0xff000000
constant TK1_RAM_SIZE (line 52) | TK1_RAM_SIZE uintptr = 0x20000
constant TK1_MMIO_SIZE (line 54) | TK1_MMIO_SIZE uintptr = 0x3fffffff
type TRNG_Type (line 57) | type TRNG_Type struct
type TIMER_Type (line 64) | type TIMER_Type struct
type UDS_Type (line 72) | type UDS_Type struct
type UART_Type (line 77) | type UART_Type struct
type TOUCH_Type (line 87) | type TOUCH_Type struct
type TK1_Type (line 92) | type TK1_Type struct
constant TK1_MMIO_TIMER_CTRL_START_BIT (line 126) | TK1_MMIO_TIMER_CTRL_START_BIT = 0
constant TK1_MMIO_TIMER_CTRL_STOP_BIT (line 127) | TK1_MMIO_TIMER_CTRL_STOP_BIT = 1
constant TK1_MMIO_TIMER_CTRL_START (line 128) | TK1_MMIO_TIMER_CTRL_START = 1 << TK1_MMIO_TIMER_CTRL_START_BIT
constant TK1_MMIO_TIMER_CTRL_STOP (line 129) | TK1_MMIO_TIMER_CTRL_STOP = 1 << TK1_MMIO_TIMER_CTRL_STOP_BIT
constant TK1_MMIO_TK1_LED_R_BIT (line 131) | TK1_MMIO_TK1_LED_R_BIT = 2
constant TK1_MMIO_TK1_LED_G_BIT (line 132) | TK1_MMIO_TK1_LED_G_BIT = 1
constant TK1_MMIO_TK1_LED_B_BIT (line 133) | TK1_MMIO_TK1_LED_B_BIT = 0
constant TK1_MMIO_TK1_GPIO1_BIT (line 135) | TK1_MMIO_TK1_GPIO1_BIT = 0
constant TK1_MMIO_TK1_GPIO2_BIT (line 136) | TK1_MMIO_TK1_GPIO2_BIT = 1
constant TK1_MMIO_TK1_GPIO3_BIT (line 137) | TK1_MMIO_TK1_GPIO3_BIT = 2
constant TK1_MMIO_TK1_GPIO4_BIT (line 138) | TK1_MMIO_TK1_GPIO4_BIT = 3
FILE: src/examples/adc/adc.go
function main (line 11) | func main() {
FILE: src/examples/bench-goro/bench.go
constant N (line 10) | N = 500000
constant Ngoro (line 11) | Ngoro = 4
function main (line 13) | func main() {
function adder (line 35) | func adder(wg *sync.WaitGroup, num int) {
FILE: src/examples/blinkm/blinkm.go
function main (line 10) | func main() {
FILE: src/examples/blinky1/blinky1.go
function main (line 10) | func main() {
FILE: src/examples/blinky2/blinky2.go
function main (line 13) | func main() {
function led1 (line 18) | func led1() {
function led2 (line 32) | func led2() {
FILE: src/examples/button/button.go
constant led (line 9) | led = machine.LED
constant button (line 10) | button = machine.BUTTON
function main (line 13) | func main() {
FILE: src/examples/button2/button2.go
function main (line 10) | func main() {
FILE: src/examples/can/feather-m4-can.go
function init (line 9) | func init() {
FILE: src/examples/can/main.go
function main (line 9) | func main() {
FILE: src/examples/caninterrupt/feather-m4-can.go
function init (line 9) | func init() {
FILE: src/examples/caninterrupt/main.go
type canMsg (line 16) | type canMsg struct
function main (line 21) | func main() {
function print (line 72) | func print(ch <-chan canMsg) {
FILE: src/examples/dac/circuitplay_express.go
function init (line 9) | func init() {
FILE: src/examples/dac/dac.go
function main (line 12) | func main() {
function play (line 28) | func play(val uint16) {
FILE: src/examples/dac/pyportal.go
function init (line 9) | func init() {
FILE: src/examples/device-id/main.go
function main (line 9) | func main() {
FILE: src/examples/echo/echo.go
function main (line 14) | func main() {
FILE: src/examples/echo2/echo2.go
function main (line 17) | func main() {
FILE: src/examples/empty/main.go
function main (line 7) | func main() {
FILE: src/examples/flash/main.go
function main (line 16) | func main() {
function equal (line 65) | func equal(a, b []byte) bool {
function checkError (line 77) | func checkError(err error) {
FILE: src/examples/gba-display/gba-display.go
function main (line 12) | func main() {
FILE: src/examples/hello-wasm-unknown/main.go
function echo (line 13) | func echo(x int32)
function update (line 16) | func update() {
function main (line 21) | func main() {
FILE: src/examples/hid-joystick/main.go
function main (line 12) | func main() {
FILE: src/examples/hid-keyboard/main.go
function main (line 20) | func main() {
function init (line 34) | func init() {
FILE: src/examples/hid-mouse/main.go
function main (line 9) | func main() {
FILE: src/examples/i2c-target/main.go
constant targetAddress (line 19) | targetAddress = 0x11
constant maxTxSize (line 20) | maxTxSize = 16
function main (line 23) | func main() {
function targetMain (line 100) | func targetMain() {
FILE: src/examples/i2c-target/main_feather_nrf52840.go
constant TARGET_SCL (line 8) | TARGET_SCL = machine.A5
constant TARGET_SDA (line 9) | TARGET_SDA = machine.A4
FILE: src/examples/i2c-target/main_feather_rp2040.go
constant TARGET_SCL (line 8) | TARGET_SCL = machine.GPIO25
constant TARGET_SDA (line 9) | TARGET_SDA = machine.GPIO24
FILE: src/examples/i2s/i2s.go
function main (line 9) | func main() {
FILE: src/examples/machinetest/machinetest.go
function main (line 12) | func main() {
FILE: src/examples/mcp3008/mcp3008.go
constant cs (line 12) | cs = machine.Pin(3)
function main (line 20) | func main() {
function Read (line 38) | func Read(channel int) (uint16, error) {
FILE: src/examples/memstats/memstats.go
function main (line 9) | func main() {
function escapesToHeap (line 25) | func escapesToHeap() {
FILE: src/examples/microbit-blink/microbit-blink.go
function main (line 11) | func main() {
FILE: src/examples/pdm/pdm.go
function main (line 13) | func main() {
FILE: src/examples/pininterrupt/arduino.go
constant button (line 8) | button = machine.D2
constant buttonMode (line 9) | buttonMode = machine.PinInputPullup
constant buttonPinChange (line 10) | buttonPinChange = machine.PinRising
FILE: src/examples/pininterrupt/circuitplay-express.go
constant button (line 8) | button = machine.BUTTON
constant buttonMode (line 9) | buttonMode = machine.PinInputPulldown
constant buttonPinChange (line 10) | buttonPinChange = machine.PinFalling
FILE: src/examples/pininterrupt/pca10040.go
constant button (line 8) | button = machine.BUTTON
constant buttonMode (line 9) | buttonMode = machine.PinInputPullup
constant buttonPinChange (line 10) | buttonPinChange = machine.PinRising
FILE: src/examples/pininterrupt/pininterrupt.go
constant led (line 15) | led = machine.LED
function main (line 20) | func main() {
FILE: src/examples/pininterrupt/stm32.go
constant button (line 8) | button = machine.BUTTON
constant buttonMode (line 9) | buttonMode = machine.PinInputPulldown
constant buttonPinChange (line 10) | buttonPinChange = machine.PinRising | machine.PinFalling
FILE: src/examples/pininterrupt/wioterminal.go
constant button (line 8) | button = machine.BUTTON
constant buttonMode (line 9) | buttonMode = machine.PinInput
constant buttonPinChange (line 10) | buttonPinChange = machine.PinFalling
FILE: src/examples/pwm/pwm.go
constant delayBetweenPeriods (line 10) | delayBetweenPeriods = time.Second * 5
function main (line 12) | func main() {
FILE: src/examples/ram-func/main.go
function main (line 72) | func main() {
function in_ram (line 82) | func in_ram() uintptr {
function in_flash (line 91) | func in_flash() uintptr {
FILE: src/examples/rand/main.go
function main (line 9) | func main() {
FILE: src/examples/rtcinterrupt/rtcinterrupt.go
function main (line 23) | func main() {
FILE: src/examples/serial/serial.go
function main (line 5) | func main() {
FILE: src/examples/systick/systick.go
function main (line 10) | func main() {
function timer_isr (line 25) | func timer_isr() {
FILE: src/examples/temp/temp.go
type celsius (line 11) | type celsius
method String (line 13) | func (c celsius) String() string {
function main (line 17) | func main() {
FILE: src/examples/time-offset/time-offset.go
constant myTime (line 16) | myTime = "2006-01-02T15:04:05Z"
function main (line 18) | func main() {
FILE: src/examples/uart/uart.go
function main (line 16) | func main() {
FILE: src/examples/usb-midi/main.go
constant cable (line 14) | cable = 0
constant channel (line 15) | channel = 1
constant velocity (line 16) | velocity = 0x40
function main (line 19) | func main() {
FILE: src/examples/usb-storage/main.go
function main (line 9) | func main() {
FILE: src/examples/wasm/callback/wasm.go
function main (line 10) | func main() {
function updater (line 19) | func updater(n *int) js.Func {
function update (line 27) | func update() {
FILE: src/examples/wasm/callback/wasm.js
constant WASM_URL (line 3) | const WASM_URL = 'wasm.wasm';
function init (line 7) | function init() {
FILE: src/examples/wasm/export/wasm.go
function main (line 8) | func main() {
function add (line 12) | func add(a, b int) int {
function update (line 17) | func update() {
FILE: src/examples/wasm/export/wasm.js
constant WASM_URL (line 3) | const WASM_URL = 'wasm.wasm';
function updateResult (line 7) | function updateResult() {
function init (line 11) | function init() {
FILE: src/examples/wasm/invoke/wasm.go
function runner (line 7) | func runner(this js.Value, args []js.Value) interface{} {
function main (line 11) | func main() {
FILE: src/examples/wasm/invoke/wasm.js
constant WASM_URL (line 3) | const WASM_URL = 'wasm.wasm';
function updateRight (line 7) | function updateRight() {
function updateLeft (line 14) | function updateLeft() {
function init (line 21) | function init() {
FILE: src/examples/wasm/main/main.go
function main (line 3) | func main() {
FILE: src/examples/wasm/server.go
constant dir (line 9) | dir = "./html"
f
Condensed preview — 1654 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,047K chars).
[
{
"path": ".circleci/config.yml",
"chars": 3640,
"preview": "version: 2.1\n\ncommands:\n submodules:\n steps:\n - run:\n name: \"Pull submodules\"\n command: git s"
},
{
"path": ".dockerignore",
"chars": 34,
"preview": "build/\nllvm-*/\n.github\n.circleci\n\n"
},
{
"path": ".github/FUNDING.yml",
"chars": 71,
"preview": "# These are supported funding model platforms\n\nopen_collective: tinygo\n"
},
{
"path": ".github/workflows/build-macos.yml",
"chars": 5271,
"preview": "name: macOS\n\non:\n pull_request:\n push:\n branches:\n - dev\n - release\n\nconcurrency:\n group: ${{ github.wor"
},
{
"path": ".github/workflows/docker.yml",
"chars": 2050,
"preview": "# This is the Github action to build and push the tinygo/tinygo-dev Docker image.\n# If you are looking for the tinygo/ti"
},
{
"path": ".github/workflows/linux.yml",
"chars": 14536,
"preview": "name: Linux\n\non:\n pull_request:\n push:\n branches:\n - dev\n - release\n\nconcurrency:\n group: ${{ github.wor"
},
{
"path": ".github/workflows/llvm.yml",
"chars": 1889,
"preview": "# This is the Github action to build and push the LLVM Docker image\n# used by the tinygo/tinygo-dev Docker image.\n#\n# It"
},
{
"path": ".github/workflows/nix.yml",
"chars": 1522,
"preview": "name: Nix\n\non:\n pull_request:\n push:\n branches:\n - dev\n - release\n\nconcurrency:\n group: ${{ github.workf"
},
{
"path": ".github/workflows/sizediff-install-pkgs.sh",
"chars": 556,
"preview": "# Command that's part of sizediff.yml. This is put in a separate file so that it\n# still works after checking out the de"
},
{
"path": ".github/workflows/sizediff.yml",
"chars": 3425,
"preview": "name: Binary size difference\n\non:\n pull_request:\n\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n canc"
},
{
"path": ".github/workflows/tinygo-extract-version.sh",
"chars": 178,
"preview": "#!/bin/sh\n\n# Extract the version string from the source code, to be stored in a variable.\ngrep 'const version' goenv/ver"
},
{
"path": ".github/workflows/windows.yml",
"chars": 7388,
"preview": "name: Windows\n\non:\n pull_request:\n push:\n branches:\n - dev\n - release\n\nconcurrency:\n group: ${{ github.w"
},
{
"path": ".gitignore",
"chars": 648,
"preview": ".DS_Store\n.vscode\ngo.work\ngo.work.sum\n\ndocs/_build\nsrc/device/avr/*.go\nsrc/device/avr/*.ld\nsrc/device/avr/*.s\nsrc/device"
},
{
"path": ".gitmodules",
"chars": 1355,
"preview": "[submodule \"lib/nrfx\"]\n\tpath = lib/nrfx\n\turl = https://github.com/NordicSemiconductor/nrfx.git\n[submodule \"lib/CMSIS\"]\n\t"
},
{
"path": "BUILDING.md",
"chars": 4005,
"preview": "# Building TinyGo\n\nTinyGo depends on LLVM and libclang, which are both big C++ libraries. It can\nalso optionally use a b"
},
{
"path": "CHANGELOG.md",
"chars": 120684,
"preview": "0.40.1\n---\n* **machine**\n - nrf: fix flash writes when SoftDevice is enabled\n* **runtime**\n - runtime: avoid fixed mat"
},
{
"path": "CODE-OF-CONDUCT.md",
"chars": 3396,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 132,
"preview": "Please take a look at our [Contributing](https://tinygo.org/docs/guides/contributing/) page on our web site for details."
},
{
"path": "CONTRIBUTORS",
"chars": 598,
"preview": "# This is the official list of TinyGo authors for copyright purposes.\n#\n# This file is not actively maintained.\n# To be "
},
{
"path": "Dockerfile",
"chars": 1092,
"preview": "# tinygo-llvm stage obtains the llvm source for TinyGo\nFROM golang:1.25 AS tinygo-llvm\n\nRUN apt-get update && \\\n apt-"
},
{
"path": "GNUmakefile",
"chars": 58885,
"preview": "\n# aliases\nall: tinygo\n\n# Default build and source directories, as created by `make llvm-build`.\nLLVM_BUILDDIR ?= llvm-b"
},
{
"path": "GOVERNANCE.md",
"chars": 1477,
"preview": "TinyGo Team Members\n===================\n\nThe team of humans who maintain TinyGo.\n\n* **Purpose**: To maintain the commu"
},
{
"path": "LICENSE",
"chars": 1766,
"preview": "Copyright (c) 2018-2025 The TinyGo Authors. All rights reserved.\n\nTinyGo includes portions of the Go standard library.\nC"
},
{
"path": "README.md",
"chars": 6858,
"preview": "# TinyGo - Go compiler for small places\n\n[\n\n// Re"
},
{
"path": "builder/builtins.go",
"chars": 5100,
"preview": "package builder\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/compileopts\"\n\t\"github.com/ti"
},
{
"path": "builder/cc.go",
"chars": 10268,
"preview": "package builder\n\n// This file implements a wrapper around the C compiler (Clang) which uses a\n// build cache.\n\nimport (\n"
},
{
"path": "builder/cc1as.cpp",
"chars": 20954,
"preview": "//go:build byollvm\n\n// Source: https://github.com/llvm/llvm-project/blob/main/clang/tools/driver/cc1as_main.cpp\n// This "
},
{
"path": "builder/cc1as.h",
"chars": 5046,
"preview": "// Source: https://github.com/llvm/llvm-project/blob/main/clang/tools/driver/cc1as_main.cpp\n// See cc1as.cpp for details"
},
{
"path": "builder/cc_test.go",
"chars": 872,
"preview": "package builder\n\nimport (\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestSplitDepFile(t *testing.T) {\n\tfor i, tc := range []struct {\n"
},
{
"path": "builder/clang.cpp",
"chars": 3153,
"preview": "//go:build byollvm\n\n#include <clang/Basic/DiagnosticOptions.h>\n#include <clang/CodeGen/CodeGenAction.h>\n#include <clang/"
},
{
"path": "builder/commands.go",
"chars": 2968,
"preview": "package builder\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os/exec\"\n\t\"runtime\"\n\t\"strings\"\n\n\t\"tinygo.org/x/go-llvm\"\n)\n\n// Commands list"
},
{
"path": "builder/config.go",
"chars": 2122,
"preview": "package builder\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\n\t\"github.com/tinygo-org/tinygo/compileopts\"\n\t\"github.com/tinygo-org/tinygo/"
},
{
"path": "builder/darwin-libsystem.go",
"chars": 1694,
"preview": "package builder\n\nimport (\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/compileopts\"\n\t\"github.com/tinygo-o"
},
{
"path": "builder/elfpatch.go",
"chars": 1436,
"preview": "package builder\n\nimport (\n\t\"debug/elf\"\n\t\"fmt\"\n\t\"os\"\n)\n\nfunc getElfSectionData(executable string, sectionName string) ([]"
},
{
"path": "builder/error.go",
"chars": 1154,
"preview": "package builder\n\n// MultiError is a list of multiple errors (actually: diagnostics) returned\n// during LLVM IR generatio"
},
{
"path": "builder/esp.go",
"chars": 6105,
"preview": "package builder\n\n// This file implements support for writing ESP image files. These image files\n// are read by the ROM b"
},
{
"path": "builder/jobs.go",
"chars": 5976,
"preview": "package builder\n\n// This file implements a job runner for the compiler, which runs jobs in\n// parallel while taking care"
},
{
"path": "builder/library.go",
"chars": 9677,
"preview": "package builder\n\nimport (\n\t\"errors\"\n\t\"io/fs\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github.com/tinygo-o"
},
{
"path": "builder/lld.cpp",
"chars": 793,
"preview": "//go:build byollvm\n\n// This file provides C wrappers for liblld.\n\n#include <lld/Common/Driver.h>\n#include <llvm/Support/"
},
{
"path": "builder/mingw-w64.go",
"chars": 5544,
"preview": "package builder\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/goenv\"\n)\n\nvar l"
},
{
"path": "builder/musl.go",
"chars": 6212,
"preview": "package builder\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/co"
},
{
"path": "builder/nrfutil.go",
"chars": 3657,
"preview": "package builder\n\nimport (\n\t\"archive/zip\"\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"os\"\n\n\t\"github.com/sigurn/crc16\"\n"
},
{
"path": "builder/objcopy.go",
"chars": 4228,
"preview": "package builder\n\nimport (\n\t\"debug/elf\"\n\t\"io\"\n\t\"os\"\n\t\"sort\"\n\n\t\"github.com/marcinbor85/gohex\"\n)\n\n// maxPadBytes is the max"
},
{
"path": "builder/picolibc.go",
"chars": 12137,
"preview": "package builder\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/goenv\"\n)\n\n// libPicolibc is "
},
{
"path": "builder/size-report.go",
"chars": 1115,
"preview": "package builder\n\nimport (\n\t_ \"embed\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"os\"\n)\n\n//go:embed size-report.html\nvar sizeReportBase str"
},
{
"path": "builder/size-report.html",
"chars": 4756,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <title>Size Report for {{.pkgName}}</title>\n <meta charset=\"utf-8\"/>\n "
},
{
"path": "builder/sizes.go",
"chars": 32523,
"preview": "package builder\n\nimport (\n\t\"bytes\"\n\t\"debug/dwarf\"\n\t\"debug/elf\"\n\t\"debug/macho\"\n\t\"debug/pe\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io"
},
{
"path": "builder/sizes_test.go",
"chars": 4331,
"preview": "package builder\n\nimport (\n\t\"regexp\"\n\t\"runtime\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/tinygo-org/tinygo/compileopts\"\n)\n\nvar se"
},
{
"path": "builder/tools-builtin.go",
"chars": 1179,
"preview": "//go:build byollvm\n\npackage builder\n\nimport (\n\t\"errors\"\n\t\"unsafe\"\n)\n\n/*\n#cgo CXXFLAGS: -fno-rtti\n#include <stdbool.h>\n#i"
},
{
"path": "builder/tools-external.go",
"chars": 346,
"preview": "//go:build !byollvm\n\npackage builder\n\nimport \"errors\"\n\nconst hasBuiltinTools = false\n\n// RunTool runs the given tool (su"
},
{
"path": "builder/tools.go",
"chars": 5686,
"preview": "package builder\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"go/scanner\"\n\t\"go/token\"\n\t\"os\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n"
},
{
"path": "builder/uf2.go",
"chars": 4070,
"preview": "package builder\n\n// This file converts firmware files from BIN to UF2 format before flashing.\n//\n// For more information"
},
{
"path": "builder/wasilibc.go",
"chars": 10196,
"preview": "package builder\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/goenv\"\n)\n\nvar libWasi"
},
{
"path": "builder/wasmbuiltins.go",
"chars": 2673,
"preview": "package builder\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\n\t\"github.com/tinygo-org/tinygo/goenv\"\n)\n\nvar libWasmBuiltins = Library"
},
{
"path": "cgo/cgo.go",
"chars": 41492,
"preview": "// Package cgo implements CGo by modifying a loaded AST. It does this by parsing\n// the `import \"C\"` statements found in"
},
{
"path": "cgo/cgo_go122.go",
"chars": 222,
"preview": "//go:build go1.22\n\npackage cgo\n\n// Code specifically for Go 1.22.\n\nimport (\n\t\"go/ast\"\n\t\"go/token\"\n)\n\nfunc init() {\n\tsetA"
},
{
"path": "cgo/cgo_test.go",
"chars": 7182,
"preview": "package cgo\n\nimport (\n\t\"bytes\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/format\"\n\t\"go/parser\"\n\t\"go/scanner\"\n\t\"go/token\"\n\t\"go/types\"\n"
},
{
"path": "cgo/const.go",
"chars": 12955,
"preview": "package cgo\n\n// This file implements a parser of a subset of the C language, just enough to\n// parse common #define stat"
},
{
"path": "cgo/const_test.go",
"chars": 2300,
"preview": "package cgo\n\nimport (\n\t\"bytes\"\n\t\"go/format\"\n\t\"go/token\"\n\t\"strings\"\n\t\"testing\"\n)\n\nfunc TestParseConst(t *testing.T) {\n\t//"
},
{
"path": "cgo/libclang.go",
"chars": 36516,
"preview": "package cgo\n\n// This file parses a fragment of C with libclang and stores the result for AST\n// modification. It does no"
},
{
"path": "cgo/libclang_config_llvm15.go",
"chars": 541,
"preview": "//go:build !byollvm && llvm15\n\npackage cgo\n\n/*\n#cgo linux CFLAGS: -I/usr/lib/llvm-15/include\n#cgo darwin,amd64 C"
},
{
"path": "cgo/libclang_config_llvm16.go",
"chars": 822,
"preview": "//go:build !byollvm && llvm16\n\npackage cgo\n\n// As of 2023-05-05, there is a packaging issue with LLVM 16 on Debian:\n// h"
},
{
"path": "cgo/libclang_config_llvm17.go",
"chars": 589,
"preview": "//go:build !byollvm && llvm17\n\npackage cgo\n\n/*\n#cgo linux CFLAGS: -I/usr/include/llvm-17 -I/usr/include/llvm-c-1"
},
{
"path": "cgo/libclang_config_llvm18.go",
"chars": 589,
"preview": "//go:build !byollvm && llvm18\n\npackage cgo\n\n/*\n#cgo linux CFLAGS: -I/usr/include/llvm-18 -I/usr/include/llvm-c-1"
},
{
"path": "cgo/libclang_config_llvm19.go",
"chars": 589,
"preview": "//go:build !byollvm && llvm19\n\npackage cgo\n\n/*\n#cgo linux CFLAGS: -I/usr/include/llvm-19 -I/usr/include/llvm-c-1"
},
{
"path": "cgo/libclang_config_llvm20.go",
"chars": 634,
"preview": "//go:build !byollvm && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19\n\npackage cgo\n\n/*\n#cgo linux CFLAGS: -"
},
{
"path": "cgo/libclang_stubs.c",
"chars": 2569,
"preview": "\n// This file implements some small trampoline functions. The signatures\n// are slightly different from the ones defined"
},
{
"path": "cgo/security.go",
"chars": 8434,
"preview": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
},
{
"path": "cgo/security_test.go",
"chars": 5702,
"preview": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
},
{
"path": "cgo/sync.go",
"chars": 1085,
"preview": "package cgo\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// #include <stdlib.h>\nimport \"C\"\n\n// refMap is a convenient way to store opa"
},
{
"path": "cgo/testdata/basic.go",
"chars": 25,
"preview": "package main\n\nimport \"C\"\n"
},
{
"path": "cgo/testdata/basic.out.go",
"chars": 1262,
"preview": "package main\n\nimport \"syscall\"\nimport \"unsafe\"\n\nvar _ unsafe.Pointer\n\n//go:linkname _Cgo_CString runtime.cgo_CString\nfun"
},
{
"path": "cgo/testdata/const.go",
"chars": 396,
"preview": "package main\n\n/*\n#define foo 3\n#define bar foo\n\n#define unreferenced 4\n#define referenced unreferenced\n\n#define fnlike()"
},
{
"path": "cgo/testdata/const.out.go",
"chars": 1467,
"preview": "package main\n\nimport \"syscall\"\nimport \"unsafe\"\n\nvar _ unsafe.Pointer\n\n//go:linkname _Cgo_CString runtime.cgo_CString\nfun"
},
{
"path": "cgo/testdata/errors.go",
"chars": 1377,
"preview": "package main\n\n/*\n#warning some warning\n\ntypedef struct {\n\tint x;\n\tint y;\n} point_t;\n\ntypedef someType noType; // undefin"
},
{
"path": "cgo/testdata/errors.out.go",
"chars": 3246,
"preview": "// CGo errors:\n// testdata/errors.go:14:1: missing function name in #cgo noescape line\n// testdata/errors.go:15:"
},
{
"path": "cgo/testdata/flags.go",
"chars": 467,
"preview": "package main\n\n/*\n// this name doesn't exist\n#cgo NOFLAGS: -foo\n\n// unknown flag\n#cgo CFLAGS: -fdoes-not-exist -DNOTDEFI"
},
{
"path": "cgo/testdata/flags.out.go",
"chars": 1501,
"preview": "// CGo errors:\n// testdata/flags.go:5:7: invalid #cgo line: NOFLAGS\n// testdata/flags.go:8:13: invalid flag: -fd"
},
{
"path": "cgo/testdata/include/foo.h",
"chars": 16,
"preview": "#define FOO_H 1\n"
},
{
"path": "cgo/testdata/symbols.go",
"chars": 478,
"preview": "package main\n\n/*\n// Function signatures.\nint foo(int a, int b);\nvoid variadic0();\nvoid variadic2(int x, int y, ...);\nsta"
},
{
"path": "cgo/testdata/symbols.out.go",
"chars": 1928,
"preview": "package main\n\nimport \"syscall\"\nimport \"unsafe\"\n\nvar _ unsafe.Pointer\n\n//go:linkname _Cgo_CString runtime.cgo_CString\nfun"
},
{
"path": "cgo/testdata/types.go",
"chars": 2838,
"preview": "package main\n\n/*\n// Simple typedef.\ntypedef int myint;\n\n// Structs, with or without name.\ntypedef struct {\n\tint x;\n\tint "
},
{
"path": "cgo/testdata/types.out.go",
"chars": 4746,
"preview": "package main\n\nimport \"syscall\"\nimport \"unsafe\"\n\nvar _ unsafe.Pointer\n\n//go:linkname _Cgo_CString runtime.cgo_CString\nfun"
},
{
"path": "colorwriter.go",
"chars": 819,
"preview": "package main\n\nimport (\n\t\"io\"\n)\n\n// ANSI escape codes for terminal colors.\nconst (\n\tTermColorReset = \"\\x1b[0m\"\n\tTermColo"
},
{
"path": "compileopts/config.go",
"chars": 20732,
"preview": "// Package compileopts contains the configuration for a single to-be-built\n// binary.\npackage compileopts\n\nimport (\n\t\"er"
},
{
"path": "compileopts/options.go",
"chars": 4315,
"preview": "package compileopts\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tvalidBuildModeOptions = []string{\"defaul"
},
{
"path": "compileopts/options_test.go",
"chars": 2738,
"preview": "package compileopts_test\n\nimport (\n\t\"errors\"\n\t\"testing\"\n\n\t\"github.com/tinygo-org/tinygo/compileopts\"\n)\n\nfunc TestVerifyO"
},
{
"path": "compileopts/target.go",
"chars": 20075,
"preview": "package compileopts\n\n// This file loads a target specification from a JSON file.\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\""
},
{
"path": "compileopts/target_test.go",
"chars": 2127,
"preview": "package compileopts\n\nimport (\n\t\"errors\"\n\t\"io/fs\"\n\t\"reflect\"\n\t\"testing\"\n)\n\nfunc TestLoadTarget(t *testing.T) {\n\t_, err :="
},
{
"path": "compiler/alias.go",
"chars": 2536,
"preview": "package compiler\n\n// This file defines alias functions for functions that are normally defined in\n// Go assembly.\n//\n// "
},
{
"path": "compiler/asserts.go",
"chars": 11092,
"preview": "package compiler\n\n// This file implements functions that do certain safety checks that are\n// required by the Go program"
},
{
"path": "compiler/atomic.go",
"chars": 2998,
"preview": "package compiler\n\nimport (\n\t\"tinygo.org/x/go-llvm\"\n)\n\n// createAtomicOp lowers a sync/atomic function by lowering it as "
},
{
"path": "compiler/calls.go",
"chars": 11517,
"preview": "package compiler\n\nimport (\n\t\"go/types\"\n\t\"strconv\"\n\n\t\"golang.org/x/tools/go/ssa\"\n\t\"tinygo.org/x/go-llvm\"\n)\n\n// For a desc"
},
{
"path": "compiler/channel.go",
"chars": 11286,
"preview": "package compiler\n\n// This file lowers channel operations (make/send/recv/close) to runtime calls\n// or pseudo-operations"
},
{
"path": "compiler/compiler.go",
"chars": 125394,
"preview": "package compiler\n\nimport (\n\t\"debug/dwarf\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"go/constant\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"math/bits\""
},
{
"path": "compiler/compiler_test.go",
"chars": 7166,
"preview": "package compiler\n\nimport (\n\t\"flag\"\n\t\"go/types\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/tinygo-org/tinygo/co"
},
{
"path": "compiler/defer.go",
"chars": 27718,
"preview": "package compiler\n\n// This file implements the 'defer' keyword in Go.\n// Defer statements are implemented by transforming"
},
{
"path": "compiler/errors.go",
"chars": 1424,
"preview": "package compiler\n\n// This file contains some utility functions related to error handling.\n\nimport (\n\t\"go/token\"\n\t\"go/typ"
},
{
"path": "compiler/func.go",
"chars": 4064,
"preview": "package compiler\n\n// This file implements function values and closures. It may need some lowering\n// in a later step, se"
},
{
"path": "compiler/gc.go",
"chars": 2933,
"preview": "package compiler\n\n// This file provides IR transformations necessary for precise and portable\n// garbage collectors.\n\nim"
},
{
"path": "compiler/goroutine.go",
"chars": 19662,
"preview": "package compiler\n\n// This file implements the 'go' keyword to start a new goroutine. See\n// goroutine-lowering.go for mo"
},
{
"path": "compiler/inlineasm.go",
"chars": 9822,
"preview": "package compiler\n\n// This file implements inline asm support by calling special functions.\n\nimport (\n\t\"fmt\"\n\t\"go/constan"
},
{
"path": "compiler/interface.go",
"chars": 36347,
"preview": "package compiler\n\n// This file transforms interface-related instructions (*ssa.MakeInterface,\n// *ssa.TypeAssert, calls "
},
{
"path": "compiler/interrupt.go",
"chars": 4053,
"preview": "package compiler\n\nimport (\n\t\"strconv\"\n\t\"strings\"\n\n\t\"golang.org/x/tools/go/ssa\"\n\t\"tinygo.org/x/go-llvm\"\n)\n\n// createInter"
},
{
"path": "compiler/intrinsics.go",
"chars": 12567,
"preview": "package compiler\n\n// This file contains helper functions to create calls to LLVM intrinsics.\n\nimport (\n\t\"go/token\"\n\t\"str"
},
{
"path": "compiler/ircheck/check.go",
"chars": 7003,
"preview": "// Package ircheck implements a checker for LLVM IR, that goes a bit further\n// than the regular LLVM IR verifier. Note "
},
{
"path": "compiler/ircheck/errors.go",
"chars": 1202,
"preview": "package ircheck\n\nimport (\n\t\"go/scanner\"\n\t\"go/token\"\n\t\"path/filepath\"\n\n\t\"tinygo.org/x/go-llvm\"\n)\n\n// errorAt returns an e"
},
{
"path": "compiler/llvm.go",
"chars": 17982,
"preview": "package compiler\n\nimport (\n\t\"fmt\"\n\t\"go/token\"\n\t\"go/types\"\n\t\"math/big\"\n\t\"strings\"\n\n\t\"github.com/tinygo-org/tinygo/compile"
},
{
"path": "compiler/llvmutil/llvm.go",
"chars": 8177,
"preview": "// Package llvmutil contains utility functions used across multiple compiler\n// packages. For example, they may be used "
},
{
"path": "compiler/map.go",
"chars": 13590,
"preview": "package compiler\n\n// This file emits the correct map intrinsics for map operations.\n\nimport (\n\t\"go/token\"\n\t\"go/types\"\n\n\t"
},
{
"path": "compiler/sizes.go",
"chars": 4134,
"preview": "package compiler\n\nimport (\n\t\"go/types\"\n)\n\n// The code in this file has been copied from\n// https://golang.org/src/go/typ"
},
{
"path": "compiler/symbol.go",
"chars": 29299,
"preview": "package compiler\n\n// This file manages symbols, that is, functions and globals. It reads their\n// pragmas, determines th"
},
{
"path": "compiler/syscall.go",
"chars": 16425,
"preview": "package compiler\n\n// This file implements the syscall.Syscall and syscall.Syscall6 instructions as\n// compiler builtins."
},
{
"path": "compiler/testdata/basic.go",
"chars": 1395,
"preview": "package main\n\n// Basic tests that don't need to be split into a separate file.\n\nfunc addInt(x, y int) int {\n\treturn x + "
},
{
"path": "compiler/testdata/basic.ll",
"chars": 6491,
"preview": "; ModuleID = 'basic.go'\nsource_filename = \"basic.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-"
},
{
"path": "compiler/testdata/channel.go",
"chars": 314,
"preview": "package main\n\nfunc chanIntSend(ch chan int) {\n\tch <- 3\n}\n\nfunc chanIntRecv(ch chan int) {\n\t<-ch\n}\n\nfunc chanZeroSend(ch "
},
{
"path": "compiler/testdata/channel.ll",
"chars": 5582,
"preview": "; ModuleID = 'channel.go'\nsource_filename = \"channel.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:"
},
{
"path": "compiler/testdata/defer-cortex-m-qemu.ll",
"chars": 23768,
"preview": "; ModuleID = 'defer.go'\nsource_filename = \"defer.go\"\ntarget datalayout = \"e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n3"
},
{
"path": "compiler/testdata/defer.go",
"chars": 432,
"preview": "package main\n\nfunc external()\n\nfunc deferSimple() {\n\tdefer func() {\n\t\tprint(3)\n\t}()\n\texternal()\n}\n\nfunc deferMultiple() "
},
{
"path": "compiler/testdata/errors.go",
"chars": 3728,
"preview": "package main\n\nimport (\n\t\"structs\"\n\t\"unsafe\"\n)\n\n//go:wasmimport modulename empty\nfunc empty()\n\n// ERROR: can only use //g"
},
{
"path": "compiler/testdata/float.go",
"chars": 611,
"preview": "package main\n\n// Test converting floats to ints.\n\nfunc f32tou32(v float32) uint32 {\n\treturn uint32(v)\n}\n\nfunc maxu32f() "
},
{
"path": "compiler/testdata/float.ll",
"chars": 3536,
"preview": "; ModuleID = 'float.go'\nsource_filename = \"float.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-"
},
{
"path": "compiler/testdata/func.go",
"chars": 115,
"preview": "package main\n\nfunc foo(callback func(int)) {\n\tcallback(3)\n}\n\nfunc bar() {\n\tfoo(someFunc)\n}\n\nfunc someFunc(int) {\n}\n"
},
{
"path": "compiler/testdata/func.ll",
"chars": 1957,
"preview": "; ModuleID = 'func.go'\nsource_filename = \"func.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n3"
},
{
"path": "compiler/testdata/gc.go",
"chars": 1014,
"preview": "package main\n\nvar (\n\tscalar1 *byte\n\tscalar2 *int32\n\tscalar3 *int64\n\tscalar4 *float32\n\n\tarray1 *[3]byte\n\tarray2 *[71]byte"
},
{
"path": "compiler/testdata/gc.ll",
"chars": 8451,
"preview": "; ModuleID = 'gc.go'\nsource_filename = \"gc.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-n32:64"
},
{
"path": "compiler/testdata/generics.go",
"chars": 389,
"preview": "package main\n\nimport \"unsafe\"\n\ntype Coord interface {\n\tint | float32\n}\n\ntype Point[T Coord] struct {\n\tX, Y T\n}\n\nfunc Add"
},
{
"path": "compiler/testdata/generics.ll",
"chars": 13458,
"preview": "; ModuleID = 'generics.go'\nsource_filename = \"generics.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32"
},
{
"path": "compiler/testdata/go1.20.go",
"chars": 254,
"preview": "package main\n\nimport \"unsafe\"\n\nfunc unsafeSliceData(s []int) *int {\n\treturn unsafe.SliceData(s)\n}\n\nfunc unsafeString(ptr"
},
{
"path": "compiler/testdata/go1.20.ll",
"chars": 2604,
"preview": "; ModuleID = 'go1.20.go'\nsource_filename = \"go1.20.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:12"
},
{
"path": "compiler/testdata/go1.21.go",
"chars": 865,
"preview": "package main\n\nfunc min1(a int) int {\n\treturn min(a)\n}\n\nfunc min2(a, b int) int {\n\treturn min(a, b)\n}\n\nfunc min3(a, b, c "
},
{
"path": "compiler/testdata/go1.21.ll",
"chars": 6602,
"preview": "; ModuleID = 'go1.21.go'\nsource_filename = \"go1.21.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:12"
},
{
"path": "compiler/testdata/goroutine-cortex-m-qemu-tasks.ll",
"chars": 11598,
"preview": "; ModuleID = 'goroutine.go'\nsource_filename = \"goroutine.go\"\ntarget datalayout = \"e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a"
},
{
"path": "compiler/testdata/goroutine-wasm-asyncify.ll",
"chars": 9536,
"preview": "; ModuleID = 'goroutine.go'\nsource_filename = \"goroutine.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i"
},
{
"path": "compiler/testdata/goroutine.go",
"chars": 1079,
"preview": "package main\n\nfunc regularFunctionGoroutine() {\n\tgo regularFunction(5)\n}\n\nfunc inlineFunctionGoroutine() {\n\tgo func(x in"
},
{
"path": "compiler/testdata/interface.go",
"chars": 1082,
"preview": "// This file tests interface types and interface builtins.\n\npackage main\n\n// Test interface construction.\n\nfunc simpleTy"
},
{
"path": "compiler/testdata/interface.ll",
"chars": 8477,
"preview": "; ModuleID = 'interface.go'\nsource_filename = \"interface.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i"
},
{
"path": "compiler/testdata/pointer.go",
"chars": 558,
"preview": "package main\n\n// This file tests various operations on pointers, such as pointer arithmetic\n// and dereferencing pointer"
},
{
"path": "compiler/testdata/pointer.ll",
"chars": 2076,
"preview": "; ModuleID = 'pointer.go'\nsource_filename = \"pointer.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:"
},
{
"path": "compiler/testdata/pragma.go",
"chars": 2417,
"preview": "package main\n\nimport _ \"unsafe\"\n\n// Creates an external global with name extern_global.\n//\n//go:extern extern_global\nvar"
},
{
"path": "compiler/testdata/pragma.ll",
"chars": 4870,
"preview": "; ModuleID = 'pragma.go'\nsource_filename = \"pragma.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:12"
},
{
"path": "compiler/testdata/slice.go",
"chars": 1424,
"preview": "package main\n\nimport \"unsafe\"\n\nfunc sliceLen(ints []int) int {\n\treturn len(ints)\n}\n\nfunc sliceCap(ints []int) int {\n\tret"
},
{
"path": "compiler/testdata/slice.ll",
"chars": 13807,
"preview": "; ModuleID = 'slice.go'\nsource_filename = \"slice.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:128-"
},
{
"path": "compiler/testdata/string.go",
"chars": 546,
"preview": "package main\n\nfunc someString() string {\n\treturn \"foo\"\n}\n\nfunc zeroLengthString() string {\n\treturn \"\"\n}\n\nfunc stringLen("
},
{
"path": "compiler/testdata/string.ll",
"chars": 3929,
"preview": "; ModuleID = 'string.go'\nsource_filename = \"string.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:12"
},
{
"path": "compiler/testdata/zeromap.go",
"chars": 507,
"preview": "package main\n\ntype hasPadding struct {\n\tb1 bool\n\ti int\n\tb2 bool\n}\n\ntype nestedPadding struct {\n\tb bool\n\thasPadding\n\ti i"
},
{
"path": "compiler/testdata/zeromap.ll",
"chars": 7611,
"preview": "; ModuleID = 'zeromap.go'\nsource_filename = \"zeromap.go\"\ntarget datalayout = \"e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-i128:"
},
{
"path": "compiler/volatile.go",
"chars": 989,
"preview": "package compiler\n\nimport \"go/types\"\n\n// This file implements volatile loads/stores in runtime/volatile.LoadT and\n// runt"
},
{
"path": "corpus_test.go",
"chars": 4038,
"preview": "package main\n\nimport (\n\t\"flag\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\t\"sync\"\n\t\"testing\"\n\n\t\"golang.org/x/tools/go/buildutil\"\n\tyaml "
},
{
"path": "diagnostics/diagnostics.go",
"chars": 6683,
"preview": "// Package diagnostics formats compiler errors and prints them in a consistent\n// way.\npackage diagnostics\n\nimport (\n\t\"b"
},
{
"path": "diff.go",
"chars": 7701,
"preview": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
},
{
"path": "docs/GNUmakefile",
"chars": 7609,
"preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHINXBUILD "
},
{
"path": "docs/conf.py",
"chars": 9855,
"preview": "# -*- coding: utf-8 -*-\n#\n# TinyGo documentation build configuration file, created by\n# sphinx-quickstart on Sat Sep 22 "
},
{
"path": "docs/index.rst",
"chars": 330,
"preview": ".. TinyGo documentation master file, created by\n sphinx-quickstart on Sat Sep 22 15:05:19 2018.\n You can adapt this "
},
{
"path": "docs/make.bat",
"chars": 7732,
"preview": "@ECHO OFF\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\n"
},
{
"path": "docs/moved.rst",
"chars": 223,
"preview": ".. _moved:\n\n.. highlight:: none\n\nThe TinyGo Docs Site Has Moved\n=========================\n\nThe documentation web site fo"
},
{
"path": "errors_test.go",
"chars": 4129,
"preview": "package main\n\nimport (\n\t\"bytes\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"regexp\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/tinygo-org/tinygo/b"
},
{
"path": "flake.nix",
"chars": 2880,
"preview": "# A Nix flake file, mainly intended for developing TinyGo.\n# You can download Nix here, for use on your Linux or macOS s"
},
{
"path": "go.mod",
"chars": 958,
"preview": "module github.com/tinygo-org/tinygo\n\ngo 1.22.0\n\nrequire (\n\tgithub.com/aykevl/go-wasm v0.0.2-0.20250317121156-42b86c49413"
},
{
"path": "go.sum",
"chars": 5670,
"preview": "github.com/aykevl/go-wasm v0.0.2-0.20250317121156-42b86c494139 h1:2O/WuAt8J5id3khcAtVB90czG80m+v0sfkLE07GrCVg=\ngithub.co"
},
{
"path": "goenv/goenv.go",
"chars": 11143,
"preview": "// Package goenv returns environment variables that are used in various parts of\n// the compiler. You can query it manua"
},
{
"path": "goenv/tools-builtin.go",
"chars": 75,
"preview": "//go:build byollvm\n\npackage goenv\n\nfunc init() {\n\thasBuiltinTools = true\n}\n"
},
{
"path": "goenv/version.go",
"chars": 3118,
"preview": "package goenv\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"runtime/debug\"\n\t\"strings\"\n)\n\n// Version of TinyGo.\n// Update this value"
},
{
"path": "goenv/version_test.go",
"chars": 1745,
"preview": "package goenv\n\nimport \"testing\"\n\nfunc TestParse(t *testing.T) {\n\ttests := []struct {\n\t\tv string\n\t\tmajor int\n\t\tmi"
},
{
"path": "hooks/README.md",
"chars": 206,
"preview": "# Hooks for Docker Hub\n\nFiles in this directory are custom commands to be run during the different Docker Hub build phas"
},
{
"path": "hooks/post_checkout",
"chars": 164,
"preview": "#!/bin/bash\n# Docker hub does a recursive clone, then checks the branch out,\n# so when a PR adds a submodule (or updates"
},
{
"path": "internal/tools/go.mod",
"chars": 1044,
"preview": "// TODO: remove this (by merging it into the top-level go.mod)\n// once the top level go.mod specifies a go new enough to"
},
{
"path": "internal/tools/go.sum",
"chars": 4893,
"preview": "github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=\ngithub.com/BurntSushi/toml v1.4.0/go.m"
},
{
"path": "internal/tools/tools.go",
"chars": 340,
"preview": "//go:build tools\n\n// Install tools specified in go.mod.\n// See https://marcofranssen.nl/manage-go-tools-via-go-modules f"
},
{
"path": "internal/wasm-tools/README.md",
"chars": 304,
"preview": "# wasm-tools directory\n\nThis directory has a separate `go.mod` file because the `wasm-tools-go` module requires Go 1.22,"
},
{
"path": "internal/wasm-tools/go.mod",
"chars": 710,
"preview": "module github.com/tinygo-org/tinygo/internal/wasm-tools\n\ngo 1.23.0\n\nrequire (\n\tgo.bytecodealliance.org v0.6.2\n\tgo.byteco"
},
{
"path": "internal/wasm-tools/go.sum",
"chars": 4189,
"preview": "github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=\ngithub.com/coreos/go-semver v0.3.1/go"
},
{
"path": "internal/wasm-tools/tools.go",
"chars": 305,
"preview": "//go:build tools\n\n// Install tools specified in go.mod.\n// See https://marcofranssen.nl/manage-go-tools-via-go-modules f"
},
{
"path": "interp/README.md",
"chars": 5448,
"preview": "# Partial evaluation of initialization code in Go\n\nFor several reasons related to code size and memory consumption (see "
},
{
"path": "interp/compiler.go",
"chars": 15009,
"preview": "package interp\n\n// This file compiles the LLVM IR to a form that's easy to efficiently\n// interpret.\n\nimport (\n\t\"strings"
},
{
"path": "interp/errors.go",
"chars": 3140,
"preview": "package interp\n\n// This file provides useful types for errors encountered during IR evaluation.\n\nimport (\n\t\"errors\"\n\t\"go"
},
{
"path": "interp/interp.go",
"chars": 10874,
"preview": "// Package interp is a partial evaluator of code run at package init time. See\n// the README in this package for details"
},
{
"path": "interp/interp_test.go",
"chars": 3285,
"preview": "package interp\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n\n\t\"tinygo.org/x/go-llvm\"\n)\n\nfunc TestInterp(t *t"
},
{
"path": "interp/interpreter.go",
"chars": 39639,
"preview": "package interp\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"tinygo.org/x/go-llvm\"\n)\n\nfunc ("
},
{
"path": "interp/memory.go",
"chars": 41962,
"preview": "package interp\n\n// This file implements memory as used by interp in a reversible way.\n// Each new function call creates "
},
{
"path": "interp/testdata/alloc.ll",
"chars": 2160,
"preview": "target datalayout = \"e-m:e-p:32:32-i64:64-n32:64-S128\"\ntarget triple = \"wasm32--wasi\"\n\n@\"runtime/gc.layout:62-2000000000"
},
{
"path": "interp/testdata/alloc.out.ll",
"chars": 1864,
"preview": "target datalayout = \"e-m:e-p:32:32-i64:64-n32:64-S128\"\ntarget triple = \"wasm32--wasi\"\n\n@pointerFree12 = local_unnamed_ad"
},
{
"path": "interp/testdata/basic.ll",
"chars": 4507,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.v1 = internal global "
},
{
"path": "interp/testdata/basic.out.ll",
"chars": 3523,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.nonConst1 = local_unn"
},
{
"path": "interp/testdata/consteval.ll",
"chars": 1411,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@intToPtrResult = global i8"
},
{
"path": "interp/testdata/consteval.out.ll",
"chars": 475,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@intToPtrResult = local_unn"
},
{
"path": "interp/testdata/interface.ll",
"chars": 1231,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.v1 = global i1 0\n@mai"
},
{
"path": "interp/testdata/interface.out.ll",
"chars": 251,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.v1 = local_unnamed_ad"
},
{
"path": "interp/testdata/phi.ll",
"chars": 916,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.phiNodesResultA = glo"
},
{
"path": "interp/testdata/phi.out.ll",
"chars": 269,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.phiNodesResultA = loc"
},
{
"path": "interp/testdata/revert.ll",
"chars": 3097,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\ndeclare void @externalCall("
},
{
"path": "interp/testdata/revert.out.ll",
"chars": 2702,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@foo.knownAtRuntime = local"
},
{
"path": "interp/testdata/slice-copy.ll",
"chars": 5812,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.uint8SliceSrc.buf = i"
},
{
"path": "interp/testdata/slice-copy.out.ll",
"chars": 1831,
"preview": "target datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64--linux\"\n\n@main.sliceSrcTaint.buf = i"
}
]
// ... and 1454 more files (download for full content)
About this extraction
This page contains the full source code of the tinygo-org/tinygo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1654 files (5.3 MB), approximately 1.5M tokens, and a symbol index with 19334 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.