Browse Source

Make footer use loadbuffer

Also introduce nicer error messages
Amrit Bhogal 1 year ago
parent
commit
8ff6712f77
3 changed files with 10 additions and 5 deletions
  1. 8 1
      src/luaot.c
  2. 1 2
      src/luaot_footer.c
  3. 1 2
      src/trampoline_footer.c

+ 8 - 1
src/luaot.c

@@ -199,6 +199,7 @@ int main(int argc, char **argv)
     printnl();
     print_source_code();
     printnl();
+    println("#define LUAOT_MODULE_NAME \"%s\"", module_name);
     println("#define LUAOT_LUAOPEN_NAME luaopen_%s", module_name);
     printnl();
     #if defined(LUAOT_USE_GOTOS)
@@ -234,7 +235,13 @@ int main(int argc, char **argv)
         println(" lua_rawseti(L, -2, 2);");
         println(" lua_pop(L, 2);");
       }
-      println(" LUAOT_LUAOPEN_NAME(L);");
+      println(" lua_pushcfunction(L, LUAOT_LUAOPEN_NAME);");
+      println("i = lua_pcall(L, 0, 0, 0);");
+      println(" if (i != LUA_OK) {");
+      println("   fprintf(stderr, \"%%s\\n\", lua_tostring(L, -1));");
+      println("   return 1;");
+      println(" }");
+      println("lua_close(L);");
       println(" return 0;");
       println("}");
     }

+ 1 - 2
src/luaot_footer.c

@@ -14,8 +14,7 @@ void bind_magic(Proto *f)
 }
 
 int LUAOT_LUAOPEN_NAME(lua_State *L) {
-
-    int ok = luaL_loadstring(L, LUAOT_MODULE_SOURCE_CODE);
+    int ok = luaL_loadbuffer(L, LUAOT_MODULE_SOURCE_CODE, sizeof(LUAOT_MODULE_SOURCE_CODE)-1, "AOT Compiled module \""LUAOT_MODULE_NAME"\"");
     switch (ok) {
       case LUA_OK:
         /* No errors */

+ 1 - 2
src/trampoline_footer.c

@@ -14,8 +14,7 @@ void bind_magic(Proto *f)
 }
 
 int LUAOT_LUAOPEN_NAME(lua_State *L) {
-
-    int ok = luaL_loadstring(L, LUAOT_MODULE_SOURCE_CODE);
+    int ok = luaL_loadbuffer(L, LUAOT_MODULE_SOURCE_CODE, sizeof(LUAOT_MODULE_SOURCE_CODE)-1, "AOT Compiled module \""LUAOT_MODULE_NAME"\"");
     switch (ok) {
       case LUA_OK:
         /* No errors */