Ferenc Wagner
2014-Jun-03 17:22 UTC
[syslinux] Undef symbol FAIL: luaL_checklstring in vesa.c32
"H. Peter Anvin" <hpa at zytor.com> writes:> On 06/03/2014 02:59 AM, Ady wrote: > >> Testing Syslinux 6.03-pre13 in a BIOS 32-bit VM, >> boot: vesa.c32 >> Undef symbol FAIL: luaL_checklstring >> Failed to load COM32 file vesa.c32 >> boot: >> >> Is there a Lua-related issue? >> >> Is vesa.c32 expecting some kind of argument? > > luaL_checklstring should be found in liblua.c32. Are you perhaps > missing the latter?Vesa.c32 is not an executable module, but a dynamically loaded binary Lua module, to be require()d. However, the Syslinux module system does not make this distinction, so it happily tries to execute it. Also, the build system is not really prepared for this (and my linker fu is rather weak). For example its ELF headers show the need for libcom32.c32, which is probably also superfluous, as the Lua interpreter (lua.c32) provides that as well (just like luaL_checklstring via liblua.c32).> I didn't realize how many modules there are in Lua, and quite frankly > not all of them are very well named in the sense that it is clear that > they are Lua-related. vesa.c32 is one of those - it is one of several > Lua modules.Their names appear in Lua code, like eg. require "vesa", so it's not arbitrary, but the file names can be prefixed transparently. Currently (with /extlinux as install path and PATH /lua specified in the config):> print (package.cpath)/lua/?.c32;/lua/?/init.c32;/extlinux/?.c32;/extlinux/?/init.c32;./?.c32 The question marks above are replaced by the argument of require(). This variable is preset by setpath() at com32/lua/src/loadlib.c:674, where some string could be inserted before the question marks, or LUA_CPATH_DEFAULT (in luaconf.h) could be set to _lua.c32 instead of simply .c32 to have some extra suffix. -- Regards, Feri.
> "H. Peter Anvin" <hpa at zytor.com> writes: > > > On 06/03/2014 02:59 AM, Ady wrote: > > > >> Testing Syslinux 6.03-pre13 in a BIOS 32-bit VM, > >> boot: vesa.c32 > >> Undef symbol FAIL: luaL_checklstring > >> Failed to load COM32 file vesa.c32 > >> boot: > >> > >> Is there a Lua-related issue? > >> > >> Is vesa.c32 expecting some kind of argument? > > > > luaL_checklstring should be found in liblua.c32. Are you perhaps > > missing the latter? > > Vesa.c32 is not an executable module, but a dynamically loaded binary > Lua module, to be require()d. However, the Syslinux module system does > not make this distinction, so it happily tries to execute it. Also, the > build system is not really prepared for this (and my linker fu is rather > weak). For example its ELF headers show the need for libcom32.c32, > which is probably also superfluous, as the Lua interpreter (lua.c32) > provides that as well (just like luaL_checklstring via liblua.c32). > > > I didn't realize how many modules there are in Lua, and quite frankly > > not all of them are very well named in the sense that it is clear that > > they are Lua-related. vesa.c32 is one of those - it is one of several > > Lua modules. > > Their names appear in Lua code, like eg. require "vesa", so it's not > arbitrary, but the file names can be prefixed transparently. Currently > (with /extlinux as install path and PATH /lua specified in the config): > > > print (package.cpath) > /lua/?.c32;/lua/?/init.c32;/extlinux/?.c32;/extlinux/?/init.c32;./?.c32 > > The question marks above are replaced by the argument of require(). > This variable is preset by setpath() at com32/lua/src/loadlib.c:674, > where some string could be inserted before the question marks, or > LUA_CPATH_DEFAULT (in luaconf.h) could be set to _lua.c32 instead of > simply .c32 to have some extra suffix. > -- > Regards, > Feri. >Please avoid using file names longer than really necessary. Just as an example (which has nothing to do with Lua) "localboot.c32" is unnecessarily not fiting "8.3" format. TIA, Ady.
Ferenc Wagner
2014-Jun-05 06:53 UTC
[syslinux] Undef symbol FAIL: luaL_checklstring in vesa.c32
Ady <ady-sf at hotmail.com> writes:>> "H. Peter Anvin" <hpa at zytor.com> writes: >> >>> I didn't realize how many modules there are in Lua, and quite frankly >>> not all of them are very well named in the sense that it is clear that >>> they are Lua-related. vesa.c32 is one of those - it is one of several >>> Lua modules. >> >> Their names appear in Lua code, like eg. require "vesa", so it's not >> arbitrary, but the file names can be prefixed transparently. Currently >> (with /extlinux as install path and PATH /lua specified in the config): >> >> > print (package.cpath) >> /lua/?.c32;/lua/?/init.c32;/extlinux/?.c32;/extlinux/?/init.c32;./?.c32 >> >> The question marks above are replaced by the argument of require(). >> This variable is preset by setpath() at com32/lua/src/loadlib.c:674, >> where some string could be inserted before the question marks, or >> LUA_CPATH_DEFAULT (in luaconf.h) could be set to _lua.c32 instead of >> simply .c32 to have some extra suffix. > > Please avoid using file names longer than really necessary. Just as > an example (which has nothing to do with Lua) "localboot.c32" is > unnecessarily not fiting "8.3" format.Using a different extension is also an option, I guess. -- Feri.
Maybe Matching Threads
- Undef symbol FAIL: luaL_checklstring in vesa.c32
- Undef symbol FAIL: luaL_checklstring in vesa.c32
- Undef symbol FAIL: luaL_checklstring in vesa.c32
- [PATCH 00/21] Upgrade to Lua 5.2.2, add filesystem module and get_key binding
- Undef symbol FAIL: luaL_checklstring in vesa.c32