From 3b28ea0583f9f40f766c92d86542432885441e47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Schr=C3=B6der?= Date: Thu, 18 Dec 2025 11:10:04 +0100 Subject: [PATCH] never export emscripten generated invoke_ functions Adding new extensions adds new functions we have to exclude manually. The way I understand this is that we never want to expose any invoke_* function any way so we can generally remove them. --- pglite-wasm/excluded.pglite.imports | 32 ----------------------------- src/backend/Makefile | 12 +++++++++-- 2 files changed, 10 insertions(+), 34 deletions(-) delete mode 100644 pglite-wasm/excluded.pglite.imports diff --git a/pglite-wasm/excluded.pglite.imports b/pglite-wasm/excluded.pglite.imports deleted file mode 100644 index e0d801f2348b5..0000000000000 --- a/pglite-wasm/excluded.pglite.imports +++ /dev/null @@ -1,32 +0,0 @@ -__indirect_function_table -invoke_di -invoke_didi -invoke_dii -invoke_i -invoke_ii -invoke_iii -invoke_iiii -invoke_iiiii -invoke_iiiiii -invoke_iiiiiii -invoke_iiiiiiii -invoke_iij -invoke_ij -invoke_ijj -invoke_j -invoke_ji -invoke_jiiiii -invoke_v -invoke_vi -invoke_vii -invoke_viii -invoke_viiidi -invoke_viiii -invoke_viiiii -invoke_viiiiii -invoke_viiiiii -invoke_viiiiiiii -invoke_viiiiiiiii -invoke_viiji -invoke_vij -invoke_vijiiidjiiii diff --git a/src/backend/Makefile b/src/backend/Makefile index 1c04efeab0099..9825ef4349e74 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -92,12 +92,20 @@ postgres: $(OBJS) # Extensions use functions from the core PG. These need to be exported by the emscripten compiler. # The following target gathers all extension imports + the default ones (included.pglite.imports), -# excludes the one in excluded.pglite.imports and adds a leading _ to each. +# excludes (invoke_* and __indirect_function_table) (Emscripten runtime trampolines) +# exlcudes defined excludes, libpq exports, and libossp-uuid exports +# and adds a leading _ to each. pglite-exported-functions: $(MKDIR_P) '$(emscripten_imports_dir)' - cat $(top_builddir)/pglite-wasm/excluded.*.imports $(top_builddir)/src/interfaces/libpq/exports.list $(LIB_EXPORTS_DIR)/libossp-uuid.exports | sort -u > '$(top_builddir)/pglite-wasm/excluded.imports' + @# Build the exclusion list + cat $(top_builddir)/src/interfaces/libpq/exports.list $(LIB_EXPORTS_DIR)/libossp-uuid.exports | sort -u > '$(top_builddir)/pglite-wasm/excluded.imports' + @# Generate exported_functions.txt: + @# 1. Filter out invoke_* and __indirect_function_table (Emscripten runtime, never export) + @# 2. Filter out symbols in excluded.imports (build in previous step) + @# 3. Add underscore prefix cat $(DESTDIR)$(emscripten_extension_imports_dir)/*.imports '$(top_builddir)/pglite-wasm/included.pglite.imports' | \ sort -u | \ + grep -v -E '^(invoke_|__indirect_function_table)' | \ grep -Fvx -f '$(top_builddir)/pglite-wasm/excluded.imports' | \ sed 's/^/_/' \ > '$(emscripten_imports_dir)/exported_functions.txt'