Skip to content

targets: put COMMON symbols in .bss on ESP chips - #6302

Merged
deadprogram merged 1 commit into
devfrom
esp32-linker-common
Nov 13, 2026
Merged

deadprogram merged 1 commit into
devfrom
esp32-linker-common

Conversation

@deadprogram

Copy link
Copy Markdown
Member

The ESP linker scripts did not list *(COMMON) in .bss. The linker put those symbols after _ebss, so the runtime did not set them to zero.

The ESP32 libphy.a has 16 COMMON symbols, for example chip7_phy_init_ctrl, phy_rxrf_dc and phy_chan_target_power. They hold PHY calibration and TX power state. With random start values, some boots could not send frames, and WiFi connect failed with espradio: auth expired. The failure rate changed with the program size.

The ESP32-S3 libphy.a has 2 COMMON symbols. The ESP32-C3 blobs have none. This PR adds the same line to all ESP linker scripts.

Test

On esp32-coreboard-v2 with the espradio connect-and-dhcp example:

  • Before: 17 of 30 boots failed with auth expired.
  • After: 30 of 30 boots connected.

A build that failed on every boot now connects on every boot. The xiao-esp32c3 and xiao-esp32s3 builds still link, and the S3 COMMON symbols are now before _ebss.

The ESP linker scripts did not list COMMON in .bss. The linker then put
those symbols after _ebss, so the runtime did not set them to zero.

The ESP32 libphy.a has 16 COMMON symbols with PHY calibration and TX power
state. With random start values, some boots could not send frames, and
WiFi connect failed with auth expired. The failure rate changed with the
program size.

Signed-off-by: deadprogram <ron@hybridgroup.com>
@github-actions

Copy link
Copy Markdown

Size difference with the dev branch:

Binary size difference
 flash                          ram
 before   after   diff          before   after   diff
  17832   17832      0   0.00%    6624    6624      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-rp2040 ./examples/adafruit4650
  64032   64032      0   0.00%    6624    6624      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/adt7410/main.go
  10624   10624      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/adxl345/main.go
  17168   17168      0   0.00%    7240    7240      0   0.00% tinygo build -size short -o ./build/test.hex -target=pybadge ./examples/amg88xx
   9856    9856      0   0.00%    5136    5136      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/apa102/main.go
  13200   13200      0   0.00%    6992    6992      0   0.00% tinygo build -size short -o ./build/test.hex -target=nano-33-ble ./examples/apds9960/proximity/main.go
  12060   12060      0   0.00%    5148    5148      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/apa102/itsybitsy-m0/main.go
   8840    8840      0   0.00%    2320    2320      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/at24cx/main.go
   9344    9344      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/bh1750/main.go
   8624    8624      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/blinkm/main.go
  73152   73152      0   0.00%    3720    3720      0   0.00% tinygo build -size short -o ./build/test.hex -target=pinetime     ./examples/bma42x/main.go
  68480   68480      0   0.00%    6592    6592      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/bmi160/main.go
  20512   20512      0   0.00%    5200    5200      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/bmi270/i2c/main.go
  22428   22428      0   0.00%   16696   16696      0   0.00% tinygo build -size short -o ./build/test.bin -target=m5stamp-s3a ./examples/bmi270/spi/main.go
  15980   15980      0   0.00%   17208   17208      0   0.00% tinygo build -size short -o ./build/test.elf -target=m5stamp-s3a ./examples/bmm150/main.go
  28368   28368      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/bmp180/main.go
  67216   67216      0   0.00%    6624    6624      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/bmp280/main.go
  13008   13008      0   0.00%    5208    5208      0   0.00% tinygo build -size short -o ./build/test.hex -target=trinket-m0 ./examples/bmp388/main.go
  21896   21896      0   0.00%    5856    5856      0   0.00% tinygo build -size short -o ./build/test.hex -target=metro-rp2350 ./examples/bno08x/i2c/main.go
   9128    9128      0   0.00%    3352    3352      0   0.00% tinygo build -size short -o ./build/test.hex -target=bluepill ./examples/ds1307/sram/main.go
  23252   23252      0   0.00%    3592    3592      0   0.00% tinygo build -size short -o ./build/test.hex -target=bluepill ./examples/ds1307/time/main.go
  30860   30860      0   0.00%    5408    5408      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/ds3231/alarms/main.go
  44412   44412      0   0.00%    5408    5408      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/ds3231/basic/main.go
   4776    4776      0   0.00%    2280    2280      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/easystepper/main.go
   6992    6992      0   0.00%    2344    2344      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/easystepper/async/main.go
  74980   74980      0   0.00%    7444    7444      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/flash/console/spi
  70804   70804      0   0.00%    9484    9484      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/flash/console/qspi
   7508    7508      0   0.00%    2284    2284      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/gc9a01/main.go
  23604   23604      0   0.00%    8588    8588      0   0.00% tinygo build -size short -o ./build/test.bin -target=esp32-coreboard-v2 ./examples/gdew0154m09/main.go
  69844   69844      0   0.00%    6824    6824      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/gps/i2c/main.go
  70300   70300      0   0.00%    6928    6928      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/gps/uart/main.go
   9384    9384      0   0.00%    5192    5192      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/hcsr04/main.go
   5912    5912      0   0.00%    2280    2280      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/hd44780/customchar/main.go
   5976    5976      0   0.00%    2280    2280      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/hd44780/text/main.go
   6761    6761      0   0.00%     585     585      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino ./examples/hd44780/keypadshield/main.go
  11424   11424      0   0.00%    5160    5160      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/hd44780i2c/main.go
  16080   16080      0   0.00%    6992    6992      0   0.00% tinygo build -size short -o ./build/test.hex -target=nano-33-ble ./examples/hts221/main.go
  16548   16548      0   0.00%    2428    2428      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/hub75/main.go
  11120   11120      0   0.00%    7368    7368      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/basic
  13504   13504      0   0.00%    5328    5328      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/ili9341/basic
  12844   12844      0   0.00%    6004    6004      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/ili9341/pico
  11564   11564      0   0.00%    5996    5996      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico2-w ./examples/ili9341/pico
  30472   30472      0   0.00%   38528   38528      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/pyportal_boing
  11080   11080      0   0.00%    7368    7368      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/scroll
  13512   13512      0   0.00%    5328    5328      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/ili9341/scroll
 266376  266376      0   0.00%   47212   47212      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/ili9341/slideshow
  12608   12608      0   0.00%    5136    5136      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-zero ./examples/ili9325/itdb02
  12693   12693      0   0.00%    1038    1038      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino ./examples/ili9325/itdb02
  23040   23040      0   0.00%   17384   17384      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-zero ./examples/ili9325/lorenz
  11696   11696      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/lis3dh/main.go
  15472   15472      0   0.00%    6992    6992      0   0.00% tinygo build -size short -o ./build/test.hex -target=nano-33-ble ./examples/lps22hb/main.go
  26472   26472      0   0.00%    2328    2328      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/lsm303agr/main.go
  29216   29216      0   0.00%    7224    7224      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m4 ./examples/lsm303dlhc/main.go
  13312   13312      0   0.00%    5184    5184      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/lsm6ds3/main.go
  11904   11904      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mag3110/main.go
  10776   10776      0   0.00%    5168    5168      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mcp23017/main.go
  11160   11160      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mcp23017-multiple/main.go
  11056   11056      0   0.00%    5136    5136      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mcp3008/main.go
  74888   74888      0   0.00%    6696    6696      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mcp2515/main.go
  33936   33936      0   0.00%    4328    4328      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/microbitmatrix/main.go
  33568   33568      0   0.00%    6372    6372      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit-v2 ./examples/microbitmatrix/main.go
   9376    9376      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mma8653/main.go
   9328    9328      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/mpu6050/main.go
  86400   86400      0   0.00%    7856    7856      0   0.00% tinygo build -size short -o ./build/test.hex -target=p1am-100 ./examples/p1am/main.go
  72040   72040      0   0.00%    7416    7416      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=waveshare-rp2040-pizero ./examples/dothat-pizero/
  13308   13308      0   0.00%    5804    5804      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/pca9685/main.go
   6676    6676      0   0.00%    3292    3292      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/pcd8544/setbuffer/main.go
   5076    5076      0   0.00%    2284    2284      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/pcd8544/setpixel/main.go
  14292   14292      0   0.00%   16856   16856      0   0.00% tinygo build -size short -o ./build/test.bin -target=m5stamp-s3a ./examples/pmw3901/motion/main.go
  13884   13884      0   0.00%   19328   19328      0   0.00% tinygo build -size short -o ./build/test.bin -target=m5stamp-s3a ./examples/pmw3901/frame/main.go
  13292   13292      0   0.00%    5788    5788      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-rp2040 ./examples/seesaw/soil-sensor
  12940   12940      0   0.00%    5788    5788      0   0.00% tinygo build -size short -o ./build/test.hex -target=qtpy-rp2040 ./examples/seesaw/rotary-encoder
   2899    2899      0   0.00%     560     560      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino ./examples/servo
  14868   14868      0   0.00%    5860    5860      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico     ./examples/sgp30
   8864    8864      0   0.00%    7176    7176      0   0.00% tinygo build -size short -o ./build/test.hex -target=pybadge ./examples/shifter/main.go
  59792   59792      0   0.00%    3728    3728      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/sht3x/main.go
  59728   59728      0   0.00%    3728    3728      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/sht4x/main.go
  59792   59792      0   0.00%    3728    3728      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/shtc3/main.go
  14328   14328      0   0.00%    8864    8864      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao-ble ./examples/ssd1306/
  12828   12828      0   0.00%    5828    5828      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao-rp2040 ./examples/ssd1306/
  12780   12780      0   0.00%    5820    5820      0   0.00% tinygo build -size short -o ./build/test.hex -target=thumby ./examples/ssd1306/
   6324    6324      0   0.00%    2284    2284      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/ssd1331/main.go
   7124    7124      0   0.00%    2284    2284      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/st7735/main.go
   6820    6820      0   0.00%    2284    2284      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/st7789/main.go
  19064   19064      0   0.00%    6368    6368      0   0.00% tinygo build -size short -o ./build/test.hex -target=waveshare-rp2040-pizero ./examples/st7789/waveshare-1in3-lcd-hat/
  18032   18032      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/thermistor/main.go
  12016   12016      0   0.00%    4960    4960      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-bluefruit ./examples/tone
  11392   11392      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/tm1637/main.go
  11776   11776      0   0.00%    5792    5792      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/touch/capacitive
  10216   10216      0   0.00%    7168    7168      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/touch/resistive/fourwire/main.go
  13332   13332      0   0.00%    7428    7428      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/touch/resistive/pyportal_touchpaint/main.go
  16680   16680      0   0.00%    5240    5240      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/vl53l1x/main.go
  29672   29672      0   0.00%   17208   17208      0   0.00% tinygo build -size short -o ./build/test.elf -target=m5stamp-s3a ./examples/vl53l3cx/main.go
  15176   15176      0   0.00%    5240    5240      0   0.00% tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/vl6180x/main.go
  26572   26572      0   0.00%   14148   14148      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-nrf52840-sense ./examples/waveshare-epd/epd1in54/main.go
   6804    6804      0   0.00%    2324    2324      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd2in13/main.go
   6484    6484      0   0.00%    2316    2316      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd2in13x/main.go
  20500   20500      0   0.00%    6892    6892      0   0.00% tinygo build -size short -o ./build/test.hex -target=waveshare-rp2040-pizero ./examples/waveshare-epd/epd2in7gray/main.go
  73528   73528      0   0.00%    6112    6112      0   0.00% tinygo build -size short -o ./build/test.hex -target=waveshare-rp2040-pizero ./examples/waveshare-epd/epd2in7gray-slideshow
   6676    6676      0   0.00%    2324    2324      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd4in2/main.go
  29084   29084      0   0.00%   18868   18868      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/waveshare-epd/epd2in66b/main.go
   7952    7952      0   0.00%    5168    5168      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/ws2812
   6168    6168      0   0.00%    8464    8464      0   0.00% tinygo build -size short -o ./build/test.bin -target=m5stamp-c3          ./examples/ws2812
  66152   66152      0   0.00%    6368    6368      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-nrf52840 ./examples/is31fl3731/main.go
   1911    1911      0   0.00%     600     600      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino   ./examples/ws2812
   1296    1296      0   0.00%     182     182      0   0.00% tinygo build -size short -o ./build/test.hex -target=digispark ./examples/ws2812
   6560    6560      0   0.00%    8728    8728      0   0.00% tinygo build -size short -o ./build/test.bin -target=xiao-esp32c3 ./examples/ws2812
   8372    8372      0   0.00%    3020    3020      0   0.00% tinygo build -size short -o ./build/test.hex -target=teensy36 ./examples/ws2812
   3821    3821      0   0.00%     582     582      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino      ./examples/ws2812/neopixel-shield
   8000    8000      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-zero ./examples/ws2812/neopixel-shield
  46112   46112      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=trinket-m0 ./examples/bme280/main.go
  17560   17560      0   0.00%    5120    5120      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/microphone/main.go
  12272   12272      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/buzzer/main.go
  13248   13248      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=trinket-m0 ./examples/veml6070/main.go
   7680    7680      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/l293x/simple/main.go
   9632    9632      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/l293x/speed/main.go
   7664    7664      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/l9110x/simple/main.go
  10032   10032      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/l9110x/speed/main.go
   8164    8164      0   0.00%    3324    3324      0   0.00% tinygo build -size short -o ./build/test.hex -target=nucleo-f103rb ./examples/shiftregister/main.go
   7580    7580      0   0.00%    2288    2288      0   0.00% tinygo build -size short -o ./build/test.hex -target=hifive1b ./examples/ssd1351/main.go
  14496   14496      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/lis2mdl/main.go
  12160   12160      0   0.00%    5152    5152      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/max72xx/main.go
  80348   80348      0   0.00%    6764    6764      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/dht/main.go
   7859    7859      0   0.00%     812     812      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino ./examples/keypad4x4/main.go
  38364   38364      0   0.00%    6372    6372      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-rp2040 ./examples/pcf8523/
  73516   73516      0   0.00%    6812    6812      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/pcf8563/alarm/
   8304    8304      0   0.00%    5168    5168      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/pcf8563/clkout/
  72060   72060      0   0.00%    6812    6812      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/pcf8563/time/
  73356   73356      0   0.00%    6812    6812      0   0.00% tinygo build -size short -o ./build/test.hex -target=xiao ./examples/pcf8563/timer/
  13468   13468      0   0.00%    5796    5796      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/qmi8658c/main.go
  12108   12108      0   0.00%    5788    5788      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-rp2040 ./examples/pcf8591/
   9824    9824      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/ina260/main.go
  13920   13920      0   0.00%    5176    5176      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/ina219/main.go
  11392   11392      0   0.00%    5192    5192      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/ina3221/main.go
  10568   10568      0   0.00%    5280    5280      0   0.00% tinygo build -size short -o ./build/test.hex -target=nucleo-l432kc ./examples/aht20/main.go
  77528   77528      0   0.00%   11240   11240      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m4 ./examples/sdcard/console/
  63744   63744      0   0.00%    8632    8632      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-m4 ./examples/i2csoft/adt7410/
  11072   11072      0   0.00%    7184    7184      0   0.00% tinygo build -size short -o ./build/test.elf -target=wioterminal ./examples/axp192/m5stack-core2-blinky/
   9928    9928      0   0.00%    5728    5728      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/xpt2046/main.go
  12536   12536      0   0.00%    4692    4692      0   0.00% tinygo build -size short -o ./build/test.elf -target=m5stack-core2 ./examples/ft6336/basic/
  20100   20100      0   0.00%    4964    4964      0   0.00% tinygo build -size short -o ./build/test.elf -target=m5stack-core2 ./examples/ft6336/touchpaint/
  14368   14368      0   0.00%    5052    5052      0   0.00% tinygo build -size short -o ./build/test.hex -target=nucleo-wl55jc ./examples/sx126x/lora_rxtx/
  50056   50056      0   0.00%    9532    9532      0   0.00% tinygo build -size short -o ./build/test.hex -target=pybadge ./examples/sx127x/lora_rxtx/
  38664   38664      0   0.00%    7672    7672      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/ssd1289/main.go
  12620   12620      0   0.00%    6772    6772      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/irremote/main.go
  13380   13380      0   0.00%    5804    5804      0   0.00% tinygo build -size short -o ./build/test.hex -target=badger2040 ./examples/uc8151/main.go
  13156   13156      0   0.00%    6248    6248      0   0.00% tinygo build -size short -o ./build/test.hex -target=badger2040 ./examples/waveshare-epd/epd2in9v2/main.go
  15024   15024      0   0.00%    5840    5840      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/scd30/main.go
  11628   11628      0   0.00%    5808    5808      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/scd4x/main.go
   8872    8872      0   0.00%    5136    5136      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=circuitplay-express ./examples/makeybutton/main.go
  10512   10512      0   0.00%    5152    5152      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/ds18b20/main.go
 127432  127432      0   0.00%    8528    8528      0   0.00% tinygo build -size short -o ./build/test.hex -target=nucleo-wl55jc ./examples/lora/lorawan/atcmd/
  17408   17408      0   0.00%    7408    7408      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/as560x/main.go
  12828   12828      0   0.00%    5788    5788      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/mpu6886/main.go
   8736    8736      0   0.00%    5128    5128      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/ttp229/main.go
  70140   70140      0   0.00%    7268    7268      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/ndir/main_ndir.go
  64408   64408      0   0.00%    3792    3792      0   0.00% tinygo build -size short -o ./build/test.hex -target=microbit ./examples/ndir/main_ndir.go
  68192   68192      0   0.00%    6656    6656      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/ndir/main_ndir.go
  10524   10524      0   0.00%    5780    5780      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/mpu9150/main.go
  12552   12552      0   0.00%    5848    5848      0   0.00% tinygo build -size short -o ./build/test.hex -target=macropad-rp2040 ./examples/sh1106/macropad_spi
  12112   12112      0   0.00%   16648   16648      0   0.00% tinygo build -size short -o ./build/test.bin -target=esp32s3-generic ./examples/st7567/
   9460    9460      0   0.00%    6220    6220      0   0.00% tinygo build -size short -o ./build/test.hex -target=macropad-rp2040 ./examples/encoders/quadrature-interrupt
  68668   68668      0   0.00%    7236    7236      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/mcp9808/main.go
  49008   49008      0   0.00%    8064    8064      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/tmc2209/main.go
  12920   12920      0   0.00%    5736    5736      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/tmc5160/main.go
  13844   13844      0   0.00%    4956    4956      0   0.00% tinygo build -size short -o ./build/test.uf2 -target=nicenano ./examples/sharpmem/main.go
  65228   65228      0   0.00%    6404    6404      0   0.00% tinygo build -size short -o ./build/test.hex -target=feather-nrf52840 ./examples/max6675/main.go
  13932   13932      0   0.00%    5796    5796      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/ens160/main.go
  17396   17396      0   0.00%    5892    5892      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/si5351/main.go
  21124   21124      0   0.00%    7116    7116      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/w5500/main.go
  91420   91420      0   0.00%    7592    7592      0   0.00% tinygo build -size short -o ./build/test.hex -target=pico ./examples/sd
  90284   90284      0   0.00%    7628    7628      0   0.00% tinygo build -size short -o ./build/test.hex -target=challenger-rp2040 ./examples/net/ntpclient/
 385000  385000      0   0.00%   14464   14464      0   0.00% tinygo build -size short -o ./build/test.hex -target=pyportal -stack-size 8kb ./examples/net/http-get/
 129620  129620      0   0.00%    8960    8960      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-nano33 -stack-size 8kb ./examples/net/tcpclient/
 364268  364268      0   0.00%   12944   12944      0   0.00% tinygo build -size short -o ./build/test.hex -target=nano-rp2040 -stack-size 8kb ./examples/net/websocket/dial/
 111960  111960      0   0.00%   10940   10940      0   0.00% tinygo build -size short -o ./build/test.hex -target=metro-m4-airlift -stack-size 8kb ./examples/net/socket/
 439416  439416      0   0.00%   19264   19264      0   0.00% tinygo build -size short -o ./build/test.hex -target=matrixportal-m4 -stack-size 8kb ./examples/net/webstatic/
 178172  178172      0   0.00%   11148   11148      0   0.00% tinygo build -size short -o ./build/test.hex -tags=noslog -target=matrixportal-m4 -stack-size 8kb ./examples/net/webstatic-httphi/
 151992  151992      0   0.00%    9088    9088      0   0.00% tinygo build -size short -o ./build/test.hex -tags=noslog -target=arduino-nano33 -stack-size 4kb ./examples/net/webserver-httphi/
 173832  173832      0   0.00%    8948    8948      0   0.00% tinygo build -size short -o ./build/test.hex -target=arduino-mkrwifi1010 -stack-size 8kb ./examples/net/tlsclient/
 165888  165888      0   0.00%    9760    9760      0   0.00% tinygo build -size short -o ./build/test.hex -target=nano-rp2040 -stack-size 8kb ./examples/net/mqttclient/natiu/
 125844  125844      0   0.00%   14252   14252      0   0.00% tinygo build -size short -o ./build/test.hex -target=wioterminal -stack-size 8kb ./examples/net/webclient/
 383440  383440      0   0.00%   19992   19992      0   0.00% tinygo build -size short -o ./build/test.hex -target=wioterminal -stack-size 8kb ./examples/net/webserver/
 145392  145392      0   0.00%   14384   14384      0   0.00% tinygo build -size short -o ./build/test.hex -tags=noslog -target=wioterminal -stack-size 8kb ./examples/net/webserver-httphi/
 380064  380064      0   0.00%   18656   18656      0   0.00% tinygo build -size short -o ./build/test.hex -target=wioterminal -stack-size 8kb ./examples/net/mqttclient/paho/
 180976  180976      0   0.00%   12016   12016      0   0.00% tinygo build -size short -o ./build/test.hex -target=elecrow-rp2040 -stack-size 8kb ./examples/net/tlsclient/
 128964  128964      0   0.00%   12020   12020      0   0.00% tinygo build -size short -o ./build/test.hex -target=elecrow-rp2350 -stack-size 8kb ./examples/net/ntpclient/
7950748 7950748      0   0.00% 1302971 1302971      0   0.00%

@davecheney davecheney left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. For followup, is there a ld flag that we could use to warn about unaccompanied symbols?

@deadprogram

Copy link
Copy Markdown
Member Author

Test results with the espradio connect-and-dhcp example. Each run resets the board and checks if WiFi connect works.

Board Without this PR With this PR
esp32-coreboard-v2 17 of 30 failed with auth expired 30 of 30 connected
xiao-esp32s3 30 of 30 connected 30 of 30 connected
xiao-esp32c3 30 of 30 connected 30 of 30 connected

The S3 and C3 work the same with and without this PR. The C3 blobs have no COMMON symbols. The 2 COMMON symbols in the S3 blob do not cause failures with this program, but now they are also set to zero.

@deadprogram

Copy link
Copy Markdown
Member Author

Thanks for quick review @davecheney

@deadprogram
deadprogram merged commit 4e22be4 into dev Nov 13, 2026
36 checks passed
@deadprogram
deadprogram deleted the esp32-linker-common branch November 13, 2026 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants