Discovered over on the dev-esp32-idf4 branch.
- Off by one error in loadLFS, leading to slight memory leak and
potential corruption.
- Insufficient return value check in loadLFS, where uzlib may return
one of two success conditions, one of which would result in an
out-of-bounds access and related pain.
- One case of a side effect within a lua_assert(), leading to
silently broken LFS image handling when compiling without asserts
enabled, the issue showing up as module names being shuffled around.
- Incorrect encoding of TValues in LFS when 64bit numbers in use.
- Lots of minor but nasty bugfixes to get all tests to run clean
- core lua and test suite fixes to allow luac -F to run cleanly against test suite
- next tranch to get LFS working
- luac.cross -a options plus fixes from feedback
- UART fixes and lua.c merge
- commit of wip prior to rebaselining against current dev
- more tweaks
The PR removed the bulk of non-newlib headers from the NodeMCU source base.
app/libc has now been cut down to the bare minimum overrides to shadow the
corresponding functions in the SDK's libc. The old c_xyz.h headerfiles have been
nuked in favour of the standard <xyz.h> headers, with a few exceptions over in
sdk-overrides. Again, shipping a libc.a without headers is a terrible thing to do. We're
still living on a prayer that libc was configured the same was as a default-configured
xtensa gcc toolchain assumes it is. That part I cannot do anything about, unfortunately,
but it's no worse than it has been before.
This enables our source files to compile successfully using the standard header files,
and use the typical malloc()/calloc()/realloc()/free(), the strwhatever()s and
memwhatever()s. These end up, through macro and linker magic, mapped to the
appropriate SDK or ROM functions.
* Rebaseline firmware to non-OS SDK version 3.0
* Note that SDK version 3.0 introduces the concept of a Flash Partition Table(PT). This is located at Flash offset 0x10000 in our firmware build.
* The firmware is now PT aware with both LFS and SPIFFS taking their partition size and location from the PT
* A new tool `tools/nodemcu-partition.py` is now used to initialise these data and can also download LFS and SPIFFS images to these partitions.
- Optimise ROTable accesses and interface
This includes some refinements to the ROTable cache which remove the linker cludges on the CROSS_COMPILE builds. Also keyhole tweaks to some of the Lua VM code to implrove runtimes.
I also noticed some compile time warnings during the build; the change to uz_unzip.c doesn't impact the compiled code, but does remove the compiler warnings.
Use separate names for the integer and float `luac.cross` binaries. Also adds local/lua directory which is already supported by tools makefile to build LFS image.
Added `node.egc.meminfo()` to expose LVM usage (to make the regular
`node.egc.ON_MEM_LIMIT` option usable).
Extended the `node.egc.ON_MEM_LIMIT` option to also take negative limits,
in which case that's taken as a request to keep a certain amount of heap
available for non-Lua use.