Sun 2021.10.24 Firmware build for ESPRUINOWIFI fails make: *** [libs/graphics/lcd_arraybuffer.o] Error 1 ===================== rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ make clean Cleaning targets rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ source scripts/provision.sh ESPRUINOWIFI Provision BOARDNAME = ESPRUINOWIFI Provision FAMILY = STM32F4 ===== NRF52 ===== ARM arm-none-eabi-gcc installed rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ make clean make make: Nothing to be done for 'make'. Cleaning targets rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ make clean && BOARD=ESPRUINOWIFI RELEASE=1 make Cleaning targets CC /mnt/c/Users/robin/espruino/targetlibs/stm32f4/lib/startup_stm32f401xx.o Generating platform configs Generating pin info Generating JS wrappers WRAPPERSOURCES = src/jswrap_array.c src/jswrap_arraybuffer.c src/jswrap_dataview.c src/jswrap_date.c src/jswrap_error.c src/jswrap_espruino.c src/jswrap_flash.c src/jswrap_functions.c src/jswrap_interactive.c src/jswrap_io.c src/jswrap_json.c src/jswrap_modules.c src/jswrap_pin.c src/jswrap_number.c src/jswrap_object.c src/jswrap_onewire.c src/jswrap_pipe.c src/jswrap_process.c src/jswrap_promise.c src/jswrap_regexp.c src/jswrap_serial.c src/jswrap_storage.c src/jswrap_spi_i2c.c src/jswrap_stream.c src/jswrap_string.c src/jswrap_waveform.c libs/compression/jswrap_heatshrink.c libs/filesystem/jswrap_fs.c libs/filesystem/jswrap_file.c libs/math/jswrap_math.c libs/graphics/jswrap_graphics.c libs/network/jswrap_net.c libs/network/http/jswrap_http.c libs/network/js/jswrap_jsnetwork.c libs/network/wiznet/jswrap_wiznet.c libs/tv/jswrap_tv.c libs/crypto/jswrap_crypto.c libs/neopixel/jswrap_neopixel.c DEFINES = -DGIT_COMMIT=8c51e53 -DNO_ASSERT -DRELEASE -DBUILDNUMBER="220" -DESPRUINOWIFI -DUSE_USB_OTG_FS=1 -DESPRUINOWIFI -DPIN_NAMES_DIRECT=1 -DUSE_BOOTLOADER -DUSE_DEBUGGER -DUSE_TAB_COMPLETE -DUSE_HEATSHRINK -DUSE_FILESYSTEM -DUSE_MATH -DUSE_GRAPHICS -DUSE_USB_HID -DUSE_NET -DUSE_NETWORK_JS -DUSE_WIZNET -D_WIZCHIP_=5500 -DUSE_TV -DUSE_CRYPTO -DUSE_SHA256 -DUSE_SHA512 -DUSE_TLS -DUSE_AES -DUSE_NEOPIXEL -DSTM32 -DUSE_STDPERIPH_DRIVER=1 -DSTM32F411CEU6 -DSTM32F411xE -DARM -DLINK_TIME_OPTIMISATION -DSTM32F4 -DUSB -DEMBEDDED CC libs/compression/heatshrink/heatshrink_encoder.o CC libs/compression/heatshrink/heatshrink_decoder.o libs/compression/heatshrink/heatshrink_encoder.c: In function 'heatshrink_encoder_sink': libs/compression/heatshrink/heatshrink_encoder.c:149:29: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t write_offset = get_input_offset(hse) + hse->input_size; ^ libs/compression/heatshrink/heatshrink_encoder.c:151:20: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t rem = ibs - hse->input_size; ^ libs/compression/heatshrink/heatshrink_encoder.c:152:22: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] uint16_t cp_sz = rem < size ? rem : size; ^ libs/compression/heatshrink/heatshrink_encoder.c:156:24: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hse->input_size += cp_sz; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'st_step_search': libs/compression/heatshrink/heatshrink_encoder.c:276:20: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t end = input_offset + msi; ^ libs/compression/heatshrink/heatshrink_encoder.c:277:22: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t start = end - window_length; ^ libs/compression/heatshrink/heatshrink_encoder.c:281:24: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] max_possible = hse->input_size - msi; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'st_yield_tag_bit': libs/compression/heatshrink/heatshrink_encoder.c:311:34: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hse->outgoing_bits = hse->match_pos - 1; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'st_yield_br_index': libs/compression/heatshrink/heatshrink_encoder.c:337:34: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hse->outgoing_bits = hse->match_length - 1; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'st_yield_br_length': libs/compression/heatshrink/heatshrink_encoder.c:353:38: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hse->match_scan_index += hse->match_length; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'find_longest_match': libs/compression/heatshrink/heatshrink_encoder.c:492:14: warning: conversion to 'int16_t' from 'int' may alter its value [-Wconversion] for (pos=end - 1; pos - (int16_t)start >= 0; pos--) { ^ libs/compression/heatshrink/heatshrink_encoder.c:505:31: warning: conversion to 'uint16_t' from 'int16_t' may change the sign of the result [-Wsign-conversion] match_index = pos; ^ libs/compression/heatshrink/heatshrink_encoder.c:524:9: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] return end - match_index; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'push_outgoing_bits': libs/compression/heatshrink/heatshrink_encoder.c:535:16: warning: conversion to 'uint8_t' from 'int' may alter its value [-Wconversion] bits = hse->outgoing_bits >> (hse->outgoing_bits_count - 8); ^ libs/compression/heatshrink/heatshrink_encoder.c:538:16: warning: conversion to 'uint8_t' from 'uint16_t' may alter its value [-Wconversion] bits = hse->outgoing_bits; ^ libs/compression/heatshrink/heatshrink_encoder.c:544:37: warning: conversion to 'uint8_t' from 'int' may alter its value [-Wconversion] hse->outgoing_bits_count -= count; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'push_literal_byte': libs/compression/heatshrink/heatshrink_encoder.c:581:33: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t processed_offset = hse->match_scan_index - 1; ^ libs/compression/heatshrink/heatshrink_encoder.c:582:29: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] uint16_t input_offset = get_input_offset(hse) + processed_offset; ^ libs/compression/heatshrink/heatshrink_encoder.c: In function 'save_backlog': libs/compression/heatshrink/heatshrink_encoder.c:598:20: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] uint16_t rem = input_buf_sz - msi; // unprocessed bytes ^ libs/compression/heatshrink/heatshrink_encoder.c:599:25: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] uint16_t shift_sz = input_buf_sz + rem; ^ libs/compression/heatshrink/heatshrink_encoder.c:606:24: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] hse->input_size -= input_buf_sz - rem; ^ CC libs/compression/compress_heatshrink.o In file included from libs/compression/heatshrink/heatshrink_decoder.h:7:0, from libs/compression/heatshrink/heatshrink_decoder.c:3: libs/compression/heatshrink/heatshrink_decoder.c: In function 'heatshrink_decoder_sink': libs/compression/heatshrink/heatshrink_config.h:8:45: warning: conversion to 'size_t' from 'int' may change the sign of the result [-Wsign-conversion] #define HEATSHRINK_STATIC_INPUT_BUFFER_SIZE 32 ^ libs/compression/heatshrink/heatshrink_decoder.h:37:5: note: in expansion of macro 'HEATSHRINK_STATIC_INPUT_BUFFER_SIZE' HEATSHRINK_STATIC_INPUT_BUFFER_SIZE ^ libs/compression/heatshrink/heatshrink_decoder.c:101:18: note: in expansion of macro 'HEATSHRINK_DECODER_INPUT_BUFFER_SIZE' size_t rem = HEATSHRINK_DECODER_INPUT_BUFFER_SIZE(hsd) - hsd->input_size; ^ libs/compression/heatshrink/heatshrink_decoder.c:111:24: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] hsd->input_size += size; ^ libs/compression/heatshrink/heatshrink_decoder.c: In function 'st_yield_literal': libs/compression/heatshrink/heatshrink_decoder.c:210:21: warning: conversion to 'uint8_t' from 'int' may alter its value [-Wconversion] uint8_t c = byte & 0xFF; ^ libs/compression/heatshrink/heatshrink_decoder.c: In function 'st_backref_index_msb': libs/compression/heatshrink/heatshrink_decoder.c:223:35: warning: conversion to 'uint8_t' from 'int' may alter its value [-Wconversion] uint16_t bits = get_bits(hsd, bit_ct - 8); ^ libs/compression/heatshrink/heatshrink_decoder.c:226:25: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hsd->output_index = bits << 8; ^ libs/compression/heatshrink/heatshrink_decoder.c: In function 'st_backref_count_msb': libs/compression/heatshrink/heatshrink_decoder.c:245:35: warning: conversion to 'uint8_t' from 'int' may alter its value [-Wconversion] uint16_t bits = get_bits(hsd, br_bit_ct - 8); ^ libs/compression/heatshrink/heatshrink_decoder.c:248:25: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] hsd->output_count = bits << 8; ^ libs/compression/heatshrink/heatshrink_decoder.c: In function 'st_yield_backref': libs/compression/heatshrink/heatshrink_decoder.c:282:30: warning: conversion to 'uint16_t' from 'size_t' may alter its value [-Wconversion] hsd->output_count -= count; ^ libs/compression/heatshrink/heatshrink_decoder.c: In function 'get_bits': libs/compression/heatshrink/heatshrink_decoder.c:317:25: warning: conversion to 'uint16_t' from 'int' may alter its value [-Wconversion] accumulator <<= 1; ^ CC libs/filesystem/fat_sd/fattime.o CC libs/filesystem/fat_sd/ff.o libs/filesystem/fat_sd/ff.c: In function 'get_fat': libs/filesystem/fat_sd/ff.c:897:7: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] wc |= fs->win[bc % SS(fs)] << 8; ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:910:10: note: in expansion of macro 'LD_DWORD' val = LD_DWORD(p) & 0x0FFFFFFF; ^ libs/filesystem/fat_sd/ff.c: In function 'put_fat': libs/filesystem/fat_sd/ff.c:951:9: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; ^ libs/filesystem/fat_sd/ff.c:956:9: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:972:11: note: in expansion of macro 'LD_DWORD' val |= LD_DWORD(p) & 0xF0000000; ^ libs/filesystem/fat_sd/ff.c: In function 'dir_next': libs/filesystem/fat_sd/ff.c:1194:6: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] i = dp->index + 1; ^ libs/filesystem/fat_sd/ff.c:1206:37: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] if (((i / (SS(dp->fs) / SZ_DIR)) & (dp->fs->csize - 1)) == 0) { /* Cluster changed? */ ^ libs/filesystem/fat_sd/ff.c: In function 'cmp_lfn': libs/filesystem/fat_sd/ff.c:1338:6: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] i = ((dir[LDIR_Ord] & ~LLE) - 1) * 13; /* Get offset in the LFN buffer */ ^ libs/filesystem/fat_sd/ff.c: In function 'pick_lfn': libs/filesystem/fat_sd/ff.c:1369:6: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] i = ((dir[LDIR_Ord] & 0x3F) - 1) * 13; /* Offset in the LFN buffer */ ^ libs/filesystem/fat_sd/ff.c: In function 'fit_lfn': libs/filesystem/fat_sd/ff.c:1409:6: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] i = (ord - 1) * 13; /* Get offset in the LFN buffer */ ^ libs/filesystem/fat_sd/ff.c: In function 'gen_numname': libs/filesystem/fat_sd/ff.c:1462:7: warning: conversion to 'BYTE' from 'UINT' may alter its value [-Wconversion] c = (seq % 16) + '0'; ^ libs/filesystem/fat_sd/ff.c:1463:21: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] if (c > '9') c += 7; ^ libs/filesystem/fat_sd/ff.c: In function 'sum_sfn': libs/filesystem/fat_sd/ff.c:1497:11: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] do sum = (sum >> 1) + (sum << 7) + *dir++; while (--n); ^ libs/filesystem/fat_sd/ff.c: In function 'dir_find': libs/filesystem/fat_sd/ff.c:1541:12: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] c &= ~LLE; ord = c; /* LFN start order */ ^ libs/filesystem/fat_sd/ff.c:1545:12: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] ord = (c == ord && sum == dir[LDIR_Chksum] && cmp_lfn(dp->lfn, dir)) ? ord - 1 : 0xFF; ^ libs/filesystem/fat_sd/ff.c: In function 'dir_read': libs/filesystem/fat_sd/ff.c:1597:11: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] c &= ~LLE; ord = c; ^ libs/filesystem/fat_sd/ff.c:1601:11: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] ord = (c == ord && sum == dir[LDIR_Chksum] && pick_lfn(dp->lfn, dir)) ? ord - 1 : 0xFF; ^ libs/filesystem/fat_sd/ff.c: In function 'get_fileinfo': libs/filesystem/fat_sd/ff.c:1776:10: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] c += 0x20; /* To lower */ ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:1787:16: note: in expansion of macro 'LD_DWORD' fno->fsize = LD_DWORD(dir+DIR_FileSize); /* Size */ ^ CC libs/filesystem/fat_sd/option/unicode.o libs/filesystem/fat_sd/ff.c: In function 'create_name': libs/filesystem/fat_sd/ff.c:1851:8: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] w = (w << 8) + b; /* Create a DBC */ ^ libs/filesystem/fat_sd/ff.c:1887:6: warning: conversion to 'BYTE' from 'UINT' may alter its value [-Wconversion] b = i = 0; ni = 8; ^ libs/filesystem/fat_sd/ff.c:1902:10: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] b <<= 2; continue; ^ libs/filesystem/fat_sd/ff.c:1928:20: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] b |= 1; w -= 0x20; ^ libs/filesystem/fat_sd/ff.c:1938:21: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] if (ni == 8) b <<= 2; ^ libs/filesystem/fat_sd/ff.c: In function 'get_ldnumber': libs/filesystem/fat_sd/ff.c:2110:8: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] i = *tp++ - '0'; ^ libs/filesystem/fat_sd/ff.c:2128:30: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] if (IsLower(tc)) tc -= 0x20; ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.c: In function 'check_fs': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2168:7: note: in expansion of macro 'LD_DWORD' if ((LD_DWORD(&fs->win[BS_FilSysType]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */ ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2170:7: note: in expansion of macro 'LD_DWORD' if ((LD_DWORD(&fs->win[BS_FilSysType32]) & 0xFFFFFF) == 0x544146) /* Check "FAT" string */ ^ libs/filesystem/fat_sd/ff.c: In function 'find_volume': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2242:20: note: in expansion of macro 'LD_DWORD' br[i] = pt[4] ? LD_DWORD(&pt[8]) : 0; ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2260:24: note: in expansion of macro 'LD_DWORD' if (!fasize) fasize = LD_DWORD(fs->win+BPB_FATSz32); ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2277:22: note: in expansion of macro 'LD_DWORD' if (!tsect) tsect = LD_DWORD(fs->win+BPB_TotSec32); ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2298:17: note: in expansion of macro 'LD_DWORD' fs->dirbase = LD_DWORD(fs->win+BPB_RootClus); /* Root directory start cluster */ ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2322:7: note: in expansion of macro 'LD_DWORD' && LD_DWORD(fs->win+FSI_LeadSig) == 0x41615252 ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2323:7: note: in expansion of macro 'LD_DWORD' && LD_DWORD(fs->win+FSI_StrucSig) == 0x61417272) ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2326:21: note: in expansion of macro 'LD_DWORD' fs->free_clust = LD_DWORD(fs->win+FSI_Free_Count); ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2329:21: note: in expansion of macro 'LD_DWORD' fs->last_clust = LD_DWORD(fs->win+FSI_Nxt_Free); ^ libs/filesystem/fat_sd/ff.c: In function 'f_open': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:2549:16: note: in expansion of macro 'LD_DWORD' fp->fsize = LD_DWORD(dir+DIR_FileSize); /* File size */ ^ libs/filesystem/fat_sd/ff.c: In function 'f_read': libs/filesystem/fat_sd/ff.c:2597:41: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */ ^ libs/filesystem/fat_sd/ff.c:2619:11: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] cc = fp->fs->csize - csect; ^ libs/filesystem/fat_sd/ff.c:2640:18: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ libs/filesystem/fat_sd/ff.c: In function 'f_write': libs/filesystem/fat_sd/ff.c:2698:41: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] csect = (BYTE)(fp->fptr / SS(fp->fs) & (fp->fs->csize - 1)); /* Sector offset in the cluster */ ^ libs/filesystem/fat_sd/ff.c:2725:17: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ libs/filesystem/fat_sd/ff.c:2734:11: warning: conversion to 'UINT' from 'int' may change the sign of the result [-Wsign-conversion] cc = fp->fs->csize - csect; ^ In file included from libs/filesystem/fat_sd/option/unicode.c:14:0: libs/filesystem/fat_sd/option/ccsbcs.c: In function 'ff_wtoupper': libs/filesystem/fat_sd/ff.c:2746:18: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ libs/filesystem/fat_sd/option/ccsbcs.c:536:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x61 + 0x41; ^ libs/filesystem/fat_sd/ff.c: In function 'f_sync': libs/filesystem/fat_sd/option/ccsbcs.c:538:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0xE0 + 0xC0; ^ libs/filesystem/fat_sd/ff.c:2810:17: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ libs/filesystem/fat_sd/option/ccsbcs.c:541:9: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x101 + 0x100; ^ libs/filesystem/fat_sd/ff.c:2823:17: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__WRITTEN; ^ libs/filesystem/fat_sd/option/ccsbcs.c:543:9: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x14B + 0x14A; ^ libs/filesystem/fat_sd/ff.c: In function 'f_getcwd': libs/filesystem/fat_sd/option/ccsbcs.c:546:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x3B1 + 0x391; ^ libs/filesystem/fat_sd/ff.c:2987:12: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] *tp++ = '0' + CurrVol; /* Put drive number */ ^ libs/filesystem/fat_sd/option/ccsbcs.c:548:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x430 + 0x410; ^ libs/filesystem/fat_sd/ff.c: In function 'f_lseek': libs/filesystem/fat_sd/option/ccsbcs.c:550:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x451 + 0x401; ^ libs/filesystem/fat_sd/ff.c:3146:17: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ libs/filesystem/fat_sd/option/ccsbcs.c:552:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0xFF41 + 0xFF21; ^ libs/filesystem/fat_sd/option/ccsbcs.c:554:7: warning: conversion to 'WCHAR' from 'int' may alter its value [-Wconversion] return chr - 0x2170 + 0x2160; ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.c: In function 'f_getfree': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:3384:12: note: in expansion of macro 'LD_DWORD' if ((LD_DWORD(p) & 0x0FFFFFFF) == 0) n++; ^ libs/filesystem/fat_sd/ff.c: In function 'f_truncate': libs/filesystem/fat_sd/ff.c:3443:18: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] fp->flag &= ~FA__DIRTY; ^ In file included from libs/filesystem/fat_sd/ff.c:122:0: libs/filesystem/fat_sd/ff.c: In function 'f_getlabel': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:3821:11: note: in expansion of macro 'LD_DWORD' *vsn = LD_DWORD(&dj.fs->win[i]); ^ libs/filesystem/fat_sd/ff.c: In function 'f_mkfs': libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:4035:11: note: in expansion of macro 'LD_DWORD' b_vol = LD_DWORD(tbl+8); /* Volume start sector */ ^ libs/filesystem/fat_sd/ff.h:332:93: warning: conversion to 'long unsigned int' from 'int' may change the sign of the result [-Wsign-conversion] #define LD_DWORD(ptr) (DWORD)(((DWORD)*((BYTE*)(ptr)+3)<<24)|((DWORD)*((BYTE*)(ptr)+2)<<16)|((WORD)*((BYTE*)(ptr)+1)<<8)|*(BYTE*)(ptr)) ^ libs/filesystem/fat_sd/ff.c:4036:11: note: in expansion of macro 'LD_DWORD' n_vol = LD_DWORD(tbl+12); /* Volume size */ ^ libs/filesystem/fat_sd/ff.c: In function 'f_printf': libs/filesystem/fat_sd/ff.c:4551:24: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] if (IsLower(d)) d -= 0x20; ^ libs/filesystem/fat_sd/ff.c:4586:20: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] if (d > 9) d += (c == 'x') ? 0x27 : 0x07; ^ libs/filesystem/fat_sd/ff.c:4587:13: warning: conversion to 'TCHAR' from 'int' may alter its value [-Wconversion] s[i++] = d + '0'; ^ CC libs/filesystem/fat_sd/spi_diskio.o CC libs/graphics/bitmap_font_4x6.o libs/filesystem/fat_sd/spi_diskio.c: In function 'disk_initialize': libs/filesystem/fat_sd/spi_diskio.c:364:11: warning: conversion to 'DSTATUS' from 'int' may alter its value [-Wconversion] Stat &= ~STA_NOINIT; /* Clear STA_NOINIT */ ^ libs/filesystem/fat_sd/spi_diskio.c: In function 'disk_ioctl': libs/filesystem/fat_sd/spi_diskio.c:525:14: warning: conversion to 'WORD' from 'int' may alter its value [-Wconversion] csize = csd[9] + ((WORD)csd[8] << 8) + 1; ^ libs/filesystem/fat_sd/spi_diskio.c:528:10: warning: conversion to 'BYTE' from 'int' may alter its value [-Wconversion] n = (csd[5] & 15) + ((csd[10] & 128) >> 7) + ((csd[9] & 3) << 1) + 2; ^ libs/filesystem/fat_sd/spi_diskio.c:529:14: warning: conversion to 'WORD' from 'int' may alter its value [-Wconversion] csize = (csd[8] >> 6) + ((WORD)csd[7] << 2) + ((WORD)(csd[6] & 3) << 10) + 1; ^ libs/filesystem/fat_sd/spi_diskio.c:554:23: warning: conversion to 'DWORD' from 'int' may change the sign of the result [-Wsign-conversion] *(DWORD*)buff = (((csd[10] & 63) << 1) + ((WORD)(csd[11] & 128) >> 7) + 1) << ((csd[13] >> 6) - 1); ^ libs/filesystem/fat_sd/spi_diskio.c:556:23: warning: conversion to 'DWORD' from 'int' may change the sign of the result [-Wsign-conversion] *(DWORD*)buff = ((WORD)((csd[10] & 124) >> 2) + 1) * (((csd[11] & 3) << 3) + ((csd[11] & 224) >> 5) + 1); ^ CC libs/graphics/bitmap_font_6x8.o CC libs/graphics/vector_font.o CC libs/graphics/graphics.o libs/graphics/vector_font.c: In function 'vfGetPolyPtr': libs/graphics/vector_font.c:423:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (unsigned char i=0; i < index; ++i) { ^ libs/graphics/vector_font.c:423:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code libs/graphics/vector_font.c: In function 'vfGetCharPtr': libs/graphics/vector_font.c:435:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (unsigned char i=0; i < ch; ++i) { ^ libs/graphics/vector_font.c: In function 'vfDrawCharPtr': libs/graphics/vector_font.c:447:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i = 0; i < charLen; ++i) { ^ libs/graphics/vector_font.c:451:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int j = 0; j < polyLen; ++j) { ^ libs/graphics/vector_font.c: In function 'graphicsVectorCharWidth': libs/graphics/vector_font.c:471:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i = 0; i < charLen; ++i) { ^ libs/graphics/vector_font.c:474:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int j = 0; j < polyLen; ++j) { ^ CC libs/graphics/lcd_arraybuffer.o Makefile:803: recipe for target 'libs/graphics/vector_font.o' failed make: *** [libs/graphics/vector_font.o] Error 1 make: *** Waiting for unfinished jobs.... libs/graphics/graphics.c:359:13: warning: 'graphicsSetPixelDeviceBlended' defined but not used [-Wunused-function] static void graphicsSetPixelDeviceBlended(JsGraphics *gfx, int x, int y, int amt) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdGetPixel_ArrayBuffer': libs/graphics/lcd_arraybuffer.c:61:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:61:7: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code libs/graphics/lcd_arraybuffer.c:66:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdSetPixels_ArrayBuffer': libs/graphics/lcd_arraybuffer.c:120:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:125:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdGetPixel_ArrayBuffer_flat': libs/graphics/lcd_arraybuffer.c:160:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:165:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdSetPixels_ArrayBuffer_flat': libs/graphics/lcd_arraybuffer.c:219:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) ^ libs/graphics/lcd_arraybuffer.c:222:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) ^ Makefile:803: recipe for target 'libs/graphics/lcd_arraybuffer.o' failed make: *** [libs/graphics/lcd_arraybuffer.o] Error 1 make: *** wait: No child processes. Stop. rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ ===================== Also repeatable for other boards: ===================== rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ source scripts/provision.sh nRF52840DONGLE NRF_SDK15=1 Provision BOARDNAME = nRF52840DONGLE Provision FAMILY = NRF52 ===== NRF52 ===== ARM arm-none-eabi-gcc installed rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ make clean make make: Nothing to be done for 'make'. Cleaning targets rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ make clean && BOARD=nRF52840DONGLE RELEASE=1 make Cleaning targets Generating platform configs Generating pin info Generating JS wrappers WRAPPERSOURCES = src/jswrap_array.c src/jswrap_arraybuffer.c src/jswrap_dataview.c src/jswrap_date.c src/jswrap_error.c src/jswrap_espruino.c src/jswrap_flash.c src/jswrap_functions.c src/jswrap_interactive.c src/jswrap_io.c src/jswrap_json.c src/jswrap_modules.c src/jswrap_pin.c src/jswrap_number.c src/jswrap_object.c src/jswrap_onewire.c src/jswrap_pipe.c src/jswrap_process.c src/jswrap_promise.c src/jswrap_regexp.c src/jswrap_serial.c src/jswrap_storage.c src/jswrap_spi_i2c.c src/jswrap_stream.c src/jswrap_string.c src/jswrap_waveform.c libs/compression/jswrap_heatshrink.c libs/math/jswrap_math.c libs/graphics/jswrap_graphics.c libs/network/jswrap_net.c libs/network/http/jswrap_http.c libs/network/js/jswrap_jsnetwork.c libs/bluetooth/jswrap_bluetooth.c libs/neopixel/jswrap_neopixel.c DEFINES = -DGIT_COMMIT=8c51e53 -DNO_ASSERT -DRELEASE -DBUILDNUMBER="220" -DnRF52840DONGLE -DCONFIG_GPIO_AS_PINRESET -DBOARD_PCA10059 -DNRF_USB=1 -DUSB -DPIN_NAMES_DIRECT=1 -DNEOPIXEL_SCK_PIN=36 -DNEOPIXEL_LRCK_PIN=39 -DUSE_DEBUGGER -DUSE_TAB_COMPLETE -DUSE_HEATSHRINK -DUSE_MATH -DUSE_GRAPHICS -DUSE_NET -DUSE_NETWORK_JS -DBLUETOOTH -DUSE_NEOPIXEL -DS140 -DNRF_SD_BLE_API_VERSION=6 -D__HEAP_SIZE=0 -DBLE_STACK_SUPPORT_REQD -DSWI_DISABLE0 -DSOFTDEVICE_PRESENT -DFLOAT_ABI_HARD -DNRF52_SERIES -DNRF52840_XXAA -DNRF52840 -DNRF5X -DNRF5X_SDK_15 -DUSE_APP_CONFIG -DARM -DLINK_TIME_OPTIMISATION -DEMBEDDED CC libs/compression/heatshrink/heatshrink_encoder.o CC libs/compression/heatshrink/heatshrink_decoder.o CC libs/compression/compress_heatshrink.o CC libs/graphics/bitmap_font_4x6.o CC libs/graphics/bitmap_font_6x8.o CC libs/graphics/vector_font.o CC libs/graphics/graphics.o CC libs/graphics/lcd_arraybuffer.o CC libs/graphics/lcd_js.o libs/graphics/vector_font.c: In function 'vfGetPolyPtr': libs/graphics/vector_font.c:423:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (unsigned char i=0; i < index; ++i) { ^ libs/graphics/vector_font.c:423:3: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code libs/graphics/vector_font.c: In function 'vfGetCharPtr': libs/graphics/vector_font.c:435:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (unsigned char i=0; i < ch; ++i) { ^ libs/graphics/vector_font.c: In function 'vfDrawCharPtr': libs/graphics/vector_font.c:447:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i = 0; i < charLen; ++i) { ^ libs/graphics/vector_font.c:451:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int j = 0; j < polyLen; ++j) { ^ libs/graphics/vector_font.c: In function 'graphicsVectorCharWidth': libs/graphics/vector_font.c:471:3: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i = 0; i < charLen; ++i) { ^ libs/graphics/vector_font.c:474:5: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int j = 0; j < polyLen; ++j) { ^ libs/graphics/vector_font.c: At top level: cc1: warning: unrecognized command line option "-Wno-expansion-to-defined" Makefile:803: recipe for target 'libs/graphics/vector_font.o' failed make: *** [libs/graphics/vector_font.o] Error 1 make: *** Waiting for unfinished jobs.... libs/graphics/graphics.c:359:13: warning: 'graphicsSetPixelDeviceBlended' defined but not used [-Wunused-function] static void graphicsSetPixelDeviceBlended(JsGraphics *gfx, int x, int y, int amt) { ^ cc1: warning: unrecognized command line option "-Wno-expansion-to-defined" libs/graphics/lcd_arraybuffer.c: In function 'lcdGetPixel_ArrayBuffer': libs/graphics/lcd_arraybuffer.c:61:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:61:7: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code libs/graphics/lcd_arraybuffer.c:66:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdSetPixels_ArrayBuffer': libs/graphics/lcd_arraybuffer.c:120:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:125:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdGetPixel_ArrayBuffer_flat': libs/graphics/lcd_arraybuffer.c:160:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) { ^ libs/graphics/lcd_arraybuffer.c:165:7: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) { ^ libs/graphics/lcd_arraybuffer.c: In function 'lcdSetPixels_ArrayBuffer_flat': libs/graphics/lcd_arraybuffer.c:219:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=gfx->data.bpp-8;i>=0;i-=8) ^ libs/graphics/lcd_arraybuffer.c:222:9: error: 'for' loop initial declarations are only allowed in C99 or C11 mode for (int i=0;idata.bpp;i+=8) ^ libs/graphics/lcd_arraybuffer.c: At top level: cc1: warning: unrecognized command line option "-Wno-expansion-to-defined" Makefile:803: recipe for target 'libs/graphics/lcd_arraybuffer.o' failed make: *** [libs/graphics/lcd_arraybuffer.o] Error 1 make: *** wait: No child processes. Stop. rgc@DESKTOP-R7T0VUC:/mnt/c/Users/robin/espruino$ ===================== [eof]