Enable address sanitizer

This commit is contained in:
Surma
2020-08-11 18:41:09 +01:00
parent db6dea846a
commit d89e846896
11 changed files with 16735 additions and 185 deletions

View File

@@ -1,4 +1,4 @@
CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.0.tar.gz
CODEC_URL = https://github.com/AOMediaCodec/libavif/archive/v0.8.0.tar.gz
CODEC_DIR = node_modules/libavif
CODEC_BUILD_DIR := $(CODEC_DIR)/build
CODEC_OUT := $(CODEC_BUILD_DIR)/libavif.a
@@ -22,9 +22,13 @@ all: $(OUT_JS)
${LDFLAGS} \
--bind \
--closure 1 \
-g2 \
-fsanitize=address \
-s ASAN_SHADOW_SIZE=1074790400 \
-s ASSERTIONS=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s MODULARIZE=1 \
-s 'EXPORT_NAME="$(basename $(@F))"' \
-s 'EXPORT_NAME="$(basename $(@F))"' \
-o $@ \
$+
@@ -33,7 +37,7 @@ $(CODEC_OUT): $(CODEC_DIR)/CMakeLists.txt $(LIBAOM_OUT)
cd $(CODEC_BUILD_DIR) && \
emcmake cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=0 \
-DBUILD_SHARED_LIBS=0 \
-DAVIF_CODEC_AOM=1 \
-DAVIF_LOCAL_AOM=1 \
../ && \
@@ -49,7 +53,7 @@ $(LIBAOM_OUT): $(LIBAOM_DIR)/CMakeLists.txt
-DENABLE_DOCS=0 \
-DENABLE_TESTS=0 \
-DENABLE_EXAMPLES=0 \
-DENABLE_TOOLS=0 \
-DENABLE_TOOLS=0 \
-DCONFIG_ACCOUNTING=1 \
-DCONFIG_INSPECTION=0 \
-DCONFIG_MULTITHREAD=0 \

View File

@@ -1,3 +1,5 @@
#include <sanitizer/lsan_interface.h>
#include <emscripten/bind.h>
#include <emscripten/val.h>
#include "avif/avif.h"
@@ -47,4 +49,5 @@ val decode(std::string avifimage) {
EMSCRIPTEN_BINDINGS(my_module) {
function("decode", &decode);
function("doLeakCheck", &__lsan_do_recoverable_leak_check);
}

View File

@@ -1,5 +1,6 @@
interface AVIFModule extends EmscriptenWasm.Module {
decode(data: BufferSource): ImageData | null;
doLeakCheck(): void;
}
export default function(opts: EmscriptenWasm.ModuleOpts): AVIFModule;

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,3 +1,5 @@
#include <sanitizer/lsan_interface.h>
#include <emscripten/bind.h>
#include <emscripten/val.h>
#include "avif/avif.h"
@@ -81,4 +83,5 @@ EMSCRIPTEN_BINDINGS(my_module) {
.field("subsample", &AvifOptions::subsample);
function("encode", &encode);
function("doLeakCheck", &__lsan_do_recoverable_leak_check);
}

View File

@@ -2,6 +2,7 @@ import { EncodeOptions } from '../../../src/codecs/avif/encoder-meta';
interface AVIFModule extends EmscriptenWasm.Module {
encode(data: BufferSource, width: number, height: number, options: EncodeOptions): Uint8Array | null;
doLeakCheck(): void;
}
export default function(opts: EmscriptenWasm.ModuleOpts): AVIFModule;

File diff suppressed because it is too large Load Diff

Binary file not shown.