tinygo/targets
Ayke van Laethem d606315515 builder: try to determine stack size information at compile time
For now, this is just an extra flag that can be used to print stack
frame information, but this is intended to provide a way to determine
stack sizes for goroutines at compile time in many cases.

Stack sizes are often somewhere around 350 bytes so are in fact not all
that big usually. Once this can be determined at compile time in many
cases, it is possible to use this information when available and as a
result increase the fallback stack size if the size cannot be determined
at compile time. This should reduce stack overflows while at the same
time reducing RAM consumption in many cases.

Interesting output for testdata/channel.go:

    function                                 stack usage (in bytes)
    Reset_Handler                            332
    .Lcommand-line-arguments.fastreceiver    220
    .Lcommand-line-arguments.fastsender      192
    .Lcommand-line-arguments.iterator        192
    .Lcommand-line-arguments.main$1          184
    .Lcommand-line-arguments.main$2          200
    .Lcommand-line-arguments.main$3          200
    .Lcommand-line-arguments.main$4          328
    .Lcommand-line-arguments.receive         176
    .Lcommand-line-arguments.selectDeadlock  72
    .Lcommand-line-arguments.selectNoOp      72
    .Lcommand-line-arguments.send            184
    .Lcommand-line-arguments.sendComplex     192
    .Lcommand-line-arguments.sender          192
    .Lruntime.run$1                          548

This shows that the stack size (if these numbers are correct) can in
fact be determined automatically in many cases, especially for small
goroutines. One of the great things about Go is lightweight goroutines,
and reducing stack sizes is very important to make goroutines
lightweight on microcontrollers.
2020-07-11 14:47:43 +02:00
..
arduino-mega2560.json avr: add Arduino Mega 2560 2020-03-24 22:24:47 +01:00
arduino-nano.json all: add Arduino Nano support 2020-01-26 23:24:45 +01:00
arduino-nano33.json machine/arduino-nano33: remove (d)ebug flag to reduce console noise when flashing 2020-05-09 13:49:40 +02:00
arduino.json all: add Arduino Nano support 2020-01-26 23:24:45 +01:00
arm.ld arm: fix linker script 2020-03-16 07:18:39 -07:00
atmega328p.json avr: fix target triple 2020-06-30 20:48:42 +02:00
atmega1284p.json avr: fix target triple 2020-06-30 20:48:42 +02:00
atmega2560.json avr: fix target triple 2020-06-30 20:48:42 +02:00
atsamd21.ld machine/atsamd21: extracts functionality for processor family into shared files. 2019-02-20 14:16:09 +01:00
atsamd21e18a.json compileopts: add linkerscript key 2019-11-04 16:21:59 +01:00
atsamd21g18a.json compileopts: add linkerscript key 2019-11-04 16:21:59 +01:00
atsamd51.ld machine/atsamd51: add support for ATSAMD51 processor using Adafruit ItsyBitsy-M4 board 2019-09-14 17:56:14 +02:00
atsamd51g19a.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
atsamd51j19a.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
atsamd51j20a.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
atsamd51j20a.ld sam: fix ROM / RAM size on atsamd51j20 2020-05-07 23:04:10 +02:00
atsamd51p19a.json Seeed WioTerminal support (#1124) 2020-06-06 12:00:26 +02:00
avr.json avr: fix target triple 2020-06-30 20:48:42 +02:00
avr.ld avr: move data address space to 0x800000 2020-03-20 15:12:38 +01:00
avr.S avr: use a garbage collector 2020-01-27 19:01:55 +01:00
bluepill.json compileopts: add linkerscript key 2019-11-04 16:21:59 +01:00
circuitplay-bluefruit.json machine/nrf: implement auto-reset over USB for nrf52840 2020-02-22 15:46:33 +01:00
circuitplay-bluefruit.ld targets: add target circuitplay-bluefruit 2020-01-06 09:23:39 +01:00
circuitplay-express.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
clue_alpha.json machine/nrf: implement auto-reset over USB for nrf52840 2020-02-22 15:46:33 +01:00
cortex-m-qemu.json targets: rename qemu target to cortex-m-qemu 2019-12-07 16:47:40 +01:00
cortex-m-qemu.s targets: rename qemu target to cortex-m-qemu 2019-12-07 16:47:40 +01:00
cortex-m.json builder: try to determine stack size information at compile time 2020-07-11 14:47:43 +02:00
cortex-m4.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
digispark.json avr: fix target triple 2020-06-30 20:48:42 +02:00
fe310.json Changes according to @aykevl's feedback 2020-07-08 00:21:59 +02:00
feather-m0.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
feather-m4.json Adding Board: Feather M4 Express (#688) 2019-11-05 15:34:46 +01:00
gameboy-advance.json compileopts: automatically add -g flag when including debug symbols 2020-07-10 16:56:13 +02:00
gameboy-advance.ld targets/gba: implement interrupt handler 2020-01-27 21:56:17 +01:00
gameboy-advance.s targets/gba: implement interrupt handler 2020-01-27 21:56:17 +01:00
hifive1-qemu.json targets: add hifive1-qemu for testing RISC-V bare metal in QEMU 2019-12-07 16:47:40 +01:00
hifive1-qemu.ld targets: add hifive1-qemu for testing RISC-V bare metal in QEMU 2019-12-07 16:47:40 +01:00
hifive1b.json hifive1b: add support for gdb subcommand 2020-01-12 17:02:53 +01:00
hifive1b.ld all: add HiFive1 rev B board with RISC-V architecture 2019-07-07 14:03:24 +02:00
itsybitsy-m0.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
itsybitsy-m4.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
k210.json maixbit: changes according to feedback 2020-07-08 00:21:59 +02:00
lm3s6965.ld all: add emulation support for Cortex-M3 with QEMU 2018-10-08 17:07:19 +02:00
maixbit.json targets/maixbit: cleanup output from kflash command by removing ansi colors 2020-07-08 20:16:03 +02:00
maixbit.ld maixbit: use custom linker script 2020-07-08 00:21:59 +02:00
metro-m4-airlift.json Adding Support for Adafruit Metro M4 Express Airlift (#694) 2019-11-15 09:52:54 +01:00
microbit-s110v8.json nrf: add microbit-s110v8 target 2020-05-26 18:50:33 +02:00
microbit.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
nrf51-s110v8.json nrf: add microbit-s110v8 target 2020-05-26 18:50:33 +02:00
nrf51-s110v8.ld nrf: add microbit-s110v8 target 2020-05-26 18:50:33 +02:00
nrf51.json nrf: add lib/nrfx/mdk to include dirs 2020-04-11 10:56:58 +02:00
nrf51.ld nrf: add micro:bit board 2018-10-06 13:04:14 +02:00
nrf52-s132v6.json nrf: fix nrf52-s132v6 config 2019-11-16 21:57:18 +01:00
nrf52-s132v6.ld nrf: expose the RAM base address 2020-05-26 18:49:44 +02:00
nrf52.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
nrf52.ld all: move generic ARM bits into separate files 2018-09-22 01:44:47 +02:00
nrf52840-mdk.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
nrf52840-s140v7.json nrf: support for SoftDevice s140 PCA10056 board 2019-11-20 16:43:55 +01:00
nrf52840-s140v7.ld nrf: expose the RAM base address 2020-05-26 18:49:44 +02:00
nrf52840.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
nrf52840.ld nrf: add nrf52840-mdk board 2018-10-18 15:07:06 +02:00
nucleo-f103rb.json compileopts: add linkerscript key 2019-11-04 16:21:59 +01:00
nxpmk66f18.ld Viable NXP/Teensy support 2020-07-08 21:58:15 +02:00
particle-3rd-gen.json Add Argon and Boron 2020-02-18 23:34:56 +01:00
particle-argon.json Apply review suggestions 2020-02-18 23:34:56 +01:00
particle-boron.json Apply review suggestions 2020-02-18 23:34:56 +01:00
particle-xenon.json Apply review suggestions 2020-02-18 23:34:56 +01:00
pca10031.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
pca10040-s132v6.json nrf: fix nrf52-s132v6 config 2019-11-16 21:57:18 +01:00
pca10040.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
pca10056-s140v7.json nrf: support for SoftDevice s140 PCA10056 board 2019-11-20 16:43:55 +01:00
pca10056.json nrf: support debugging the PCA10056 2020-06-08 19:54:41 +02:00
pinetime-devkit0.json nrf: add support for the PineTime64 devkit 2019-10-28 07:17:39 +01:00
pybadge.json Added Adafruit's pybadge target (#795) 2019-12-22 19:37:16 +01:00
pygamer.json Added Adafruit PyGamer Target (#1173) 2020-06-19 14:35:42 +02:00
pyportal.json Adafruit PyPortal Support (#800) 2020-01-06 11:53:43 +01:00
reelboard-s140v7.json reelboard: add SoftDevice target reelboard-s140v7 2020-04-11 10:56:58 +02:00
reelboard.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
riscv-qemu.json risc-v: add support for 64-bit RISC-V CPUs 2020-06-08 16:47:39 +02:00
riscv-qemu.ld riscv: implement VirtIO target 2020-03-26 23:03:55 +01:00
riscv.json riscv: refactor assembly files to support RV64 and F extension 2020-07-08 00:21:59 +02:00
riscv.ld maixbit: changes according to feedback 2020-07-08 00:21:59 +02:00
riscv32.json riscv: refactor assembly files to support RV64 and F extension 2020-07-08 00:21:59 +02:00
riscv64.json maixbit: changes according to feedback 2020-07-08 00:21:59 +02:00
stm32.ld stm32: initial support 2018-09-22 01:51:44 +02:00
stm32f4disco-1.json machine/stm32f4disco: add updated target file for newer version of board that have updated st-link 2020-06-30 14:08:20 +02:00
stm32f4disco.json arm: make FPU configuraton consistent 2020-05-26 16:39:14 +02:00
stm32f103rb.ld machine/stm32f103xx/nucleo-f103rb: add support for NUCLEO-F103RB STM32F1-based board 2019-09-17 13:26:26 +02:00
stm32f407.ld stm32: add support for the STM32F4Discovery 2019-04-13 13:32:05 +02:00
teensy36.json Working on NXP/Teensy support 2020-07-08 21:58:15 +02:00
teensy36.s Viable NXP/Teensy support 2020-07-08 21:58:15 +02:00
trinket-m0.json targets: refactor flash/gdb target configuration 2019-10-14 16:44:33 +02:00
wasm.json wasm32: Add --no-demangle option 2020-06-22 11:42:17 +02:00
wasm_exec.js wasm_exec: Implement syscall/js.valueDelete. 2020-04-13 08:47:34 +02:00
wioterminal.json Seeed WioTerminal support (#1124) 2020-06-06 12:00:26 +02:00
x9pro.json machine: add support for the X9 Pro smartwatch 2019-11-03 17:28:32 +01:00
xiao.json Seeed XIAO support (#1170) 2020-06-22 09:01:13 +02:00