Skip to content
This repository was archived by the owner on Dec 16, 2020. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/wasm/cpp/Makefile.base
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ else
endif

%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm

clean:
rm *.wasm
2 changes: 1 addition & 1 deletion api/wasm/cpp/Makefile.base_lite
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ else
endif

%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -DPROXY_WASM_PROTOBUF_LITE=1 -I${CPP_API} -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics_lite.pb.cc ${CPP_API}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf-lite.a -o $*.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -DPROXY_WASM_PROTOBUF_LITE=1 -I${CPP_API} -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics_lite.pb.cc ${CPP_API}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf-lite.a -o $*.wasm

clean:
rm *.wasm
4 changes: 2 additions & 2 deletions api/wasm/cpp/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ all: plugin.wasm

%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
ls /root
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js ${ABSL_CPP} $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js ${ABSL_CPP} $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a -o $*.wasm
```

Precompiled abseil libraries are also available, so the above can also be done as:
Expand All @@ -121,7 +121,7 @@ all: plugin.wasm

%.wasm %.wat: %.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_enums.h ${CPP_API}/proxy_wasm_externs.h ${CPP_API}/proxy_wasm_api.h ${CPP_API}/proxy_wasm_intrinsics.js ${CPP_CONTEXT_LIB}
ls /root
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a ${ABSL_LIBS} -o $*.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] --std=c++17 -O3 -flto -s WASM_OBJECT_FILES=0 --llvm-lto 1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include -I${ABSL} --js-library ${CPP_API}/proxy_wasm_intrinsics.js $*.cc ${CPP_API}/proxy_wasm_intrinsics.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf.a ${ABSL_LIBS} -o $*.wasm
```

### Ownership of the resulting .wasm files
Expand Down
Binary file modified examples/wasm/envoy_filter_http_wasm_example.wasm
Binary file not shown.
4 changes: 1 addition & 3 deletions source/extensions/common/wasm/null/null_plugin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,7 @@ void NullPlugin::getFunction(absl::string_view function_name, WasmCallVoid<0>* f

void NullPlugin::getFunction(absl::string_view function_name, WasmCallVoid<1>* f) {
auto plugin = this;
if (function_name == "free") {
*f = [](Common::Wasm::Context*, Word ptr) { return ::free(reinterpret_cast<void*>(ptr.u64_)); };
} else if (function_name == "proxy_on_tick") {
if (function_name == "proxy_on_tick") {
*f = [plugin](Common::Wasm::Context* context, Word context_id) {
SaveRestoreContext saved_context(context);
plugin->onTick(context_id.u64_);
Expand Down
5 changes: 2 additions & 3 deletions source/extensions/common/wasm/wasm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,6 @@ void Wasm::getFunctions() {
_GET(__wasm_call_ctors);

_GET(malloc);
_GET(free);
#undef _GET

#define _GET_PROXY(_fn) wasm_vm_->getFunction("proxy_" #_fn, &_fn##_);
Expand Down Expand Up @@ -252,8 +251,8 @@ void Wasm::getFunctions() {
_GET_PROXY(on_delete);
#undef _GET_PROXY

if (!malloc_ || !free_) {
throw WasmException("WASM missing malloc/free");
if (!malloc_) {
throw WasmException("WASM missing malloc");
}
}

Expand Down
1 change: 0 additions & 1 deletion source/extensions/common/wasm/wasm.h
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ class Wasm : public Logger::Loggable<Logger::Id::wasm>, public std::enable_share
WasmCallVoid<0> __wasm_call_ctors_;

WasmCallWord<1> malloc_;
WasmCallVoid<1> free_;

// Calls into the VM.
WasmCallWord<2> validate_configuration_;
Expand Down
Binary file modified test/extensions/access_loggers/wasm/test_data/logging.wasm
Binary file not shown.
Binary file modified test/extensions/common/wasm/test_data/bad_signature_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/common/wasm/test_data/test_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/common/wasm/test_data/test_rust.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/async_call_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/grpc_call_cpp.wasm
Binary file not shown.
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/headers_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/http_callout_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/metadata_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/queue_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/root_id_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/http/wasm/test_data/shared_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/filters/network/wasm/test_data/logging_cpp.wasm
Binary file not shown.
2 changes: 1 addition & 1 deletion test/extensions/wasm/test_data/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ include ../../../../api/wasm/cpp/Makefile.base_lite
include ../../../../api/wasm/rust/Makefile.base

missing_cpp.wasm missing_cpp.wat: missing_cpp.cc ${CPP_API}/proxy_wasm_intrinsics.h ${CPP_API}/proxy_wasm_intrinsics.js
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] -s ERROR_ON_UNDEFINED_SYMBOLS=0 --std=c++17 -O3 -DPROXY_WASM_PROTOBUF_LITE=1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js missing_cpp.cc ${CPP_API}/proxy_wasm_intrinsics_lite.pb.cc ${CPP_API}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf-lite.a -o missing_cpp.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] -s ERROR_ON_UNDEFINED_SYMBOLS=0 --std=c++17 -O3 -DPROXY_WASM_PROTOBUF_LITE=1 -I${CPP_API} -I${CPP_API}/google/protobuf -I/usr/local/include --js-library ${CPP_API}/proxy_wasm_intrinsics.js missing_cpp.cc ${CPP_API}/proxy_wasm_intrinsics_lite.pb.cc ${CPP_API}/struct_lite.pb.cc ${CPP_CONTEXT_LIB} ${CPP_API}/libprotobuf-lite.a -o missing_cpp.wasm
2 changes: 1 addition & 1 deletion test/extensions/wasm/test_data/Makefile.docker_cpp_builder
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ all: logging_cpp.wasm bad_signature_cpp.wasm segv_cpp.wasm emscripten_cpp.wasm a
chown ${uid}.${gid} *.wasm

missing_cpp.wasm: missing_cpp.cc ${DOCKER_SDK}/proxy_wasm_intrinsics.h ${DOCKER_SDK}/proxy_wasm_intrinsics.js
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc','_free'] -s ERROR_ON_UNDEFINED_SYMBOLS=0 --std=c++17 -O3 -DPROXY_WASM_PROTOBUF_LITE=1 -I${DOCKER_SDK} -I${DOCKER_SDK}/google/protobuf -I/usr/local/include --js-library ${DOCKER_SDK}/proxy_wasm_intrinsics.js missing_cpp.cc ${DOCKER_SDK}/proxy_wasm_intrinsics_lite.pb.cc ${DOCKER_SDK}/struct_lite.pb.cc ${DOCKER_SDK}/libprotobuf-lite.a -o missing_cpp.wasm
em++ -s STANDALONE_WASM=1 -s EMIT_EMSCRIPTEN_METADATA=1 -s EXPORTED_FUNCTIONS=['_malloc'] -s ERROR_ON_UNDEFINED_SYMBOLS=0 --std=c++17 -O3 -DPROXY_WASM_PROTOBUF_LITE=1 -I${DOCKER_SDK} -I${DOCKER_SDK}/google/protobuf -I/usr/local/include --js-library ${DOCKER_SDK}/proxy_wasm_intrinsics.js missing_cpp.cc ${DOCKER_SDK}/proxy_wasm_intrinsics_lite.pb.cc ${DOCKER_SDK}/struct_lite.pb.cc ${DOCKER_SDK}/libprotobuf-lite.a -o missing_cpp.wasm
chown ${uid}.${gid} missing_cpp.wasm

include ${DOCKER_SDK}/Makefile.base_lite
Binary file modified test/extensions/wasm/test_data/asm2wasm_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/bad_signature_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/emscripten_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/logging_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/logging_rust.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/missing_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/segv_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/speed_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/start_cpp.wasm
Binary file not shown.
Binary file modified test/extensions/wasm/test_data/stats_cpp.wasm
Binary file not shown.