summaryrefslogtreecommitdiff
path: root/src/binary-reader-objdump.c
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2016-11-18 16:20:14 -0800
committerGitHub <noreply@github.com>2016-11-18 16:20:14 -0800
commit3382c7f9835fef7a3effa81d97d79bb48269ea0f (patch)
tree2a10396cc476904a8bb2d6c0d994ca46a96c911d /src/binary-reader-objdump.c
parentefc81f5be6ce999c46681d46dd169a845ad670a7 (diff)
downloadwabt-3382c7f9835fef7a3effa81d97d79bb48269ea0f.tar.gz
wabt-3382c7f9835fef7a3effa81d97d79bb48269ea0f.tar.bz2
wabt-3382c7f9835fef7a3effa81d97d79bb48269ea0f.zip
Parse arbitrary user sections (#220)
Handle user sections interspersed with other section types and add tests for these. Switch from calling these sections "Unknown" to "User".
Diffstat (limited to 'src/binary-reader-objdump.c')
-rw-r--r--src/binary-reader-objdump.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/binary-reader-objdump.c b/src/binary-reader-objdump.c
index f00e0cc1..50141062 100644
--- a/src/binary-reader-objdump.c
+++ b/src/binary-reader-objdump.c
@@ -90,6 +90,17 @@ static WasmResult begin_section(Context* ctx,
return WASM_OK;
}
+static WasmResult begin_user_section(WasmBinaryReaderContext* ctx,
+ uint32_t size,
+ WasmStringSlice section_name) {
+ Context* context = ctx->user_data;
+ if (begin_section(context, "USER", ctx->offset, size))
+ return WASM_ERROR;
+ if (context->options->mode == WASM_DUMP_DETAILS)
+ printf(" - name: \"" PRIstringslice "\"\n", WASM_PRINTF_STRING_SLICE_ARG(section_name));
+ return WASM_OK;
+}
+
SEGSTART(signature, "TYPE")
SEGSTART(import, "IMPORT")
SEGSTART(function_signatures, "FUNCTION")
@@ -101,7 +112,6 @@ SEGSTART(start, "START")
SEGSTART(function_bodies, "CODE")
SEGSTART(elem, "ELEM")
SEGSTART(data, "DATA")
-SEGSTART(names, "NAMES")
static WasmResult on_count(uint32_t count, void* user_data) {
Context* ctx = user_data;
@@ -365,7 +375,7 @@ static WasmResult on_import(uint32_t index,
static WasmResult on_import_func(uint32_t index,
uint32_t sig_index,
void* user_data) {
- print_details(user_data, " - func sig=%d\n", sig_index);
+ print_details(user_data, " - func sig=%d\n", sig_index);
return WASM_OK;
}
@@ -374,7 +384,7 @@ static WasmResult on_import_table(uint32_t index,
const WasmLimits* elem_limits,
void* user_data) {
print_details(user_data,
- " - table elem_type=%s init=%" PRId64 " max=%" PRId64 "\n",
+ " - table elem_type=%s init=%" PRId64 " max=%" PRId64 "\n",
wasm_get_type_name(elem_type),
elem_limits->initial,
elem_limits->max);
@@ -384,7 +394,7 @@ static WasmResult on_import_table(uint32_t index,
static WasmResult on_import_memory(uint32_t index,
const WasmLimits* page_limits,
void* user_data) {
- print_details(user_data, " - memory\n");
+ print_details(user_data, " - memory\n");
return WASM_OK;
}
@@ -392,14 +402,14 @@ static WasmResult on_import_global(uint32_t index,
WasmType type,
WasmBool mutable_,
void* user_data) {
- print_details(user_data, "- global\n");
+ print_details(user_data, " - global\n");
return WASM_OK;
}
static WasmResult on_memory(uint32_t index,
const WasmLimits* page_limits,
void* user_data) {
- print_details(user_data, "- memory %d\n", index);
+ print_details(user_data, " - memory %d\n", index);
return WASM_OK;
}
@@ -408,7 +418,7 @@ static WasmResult on_table(uint32_t index,
const WasmLimits* elem_limits,
void* user_data) {
print_details(user_data,
- " - [%d] type=%#x init=%" PRId64 " max=%" PRId64 " \n",
+ " - [%d] type=%#x init=%" PRId64 " max=%" PRId64 " \n",
index,
elem_type,
elem_limits->initial,
@@ -487,7 +497,10 @@ static WasmBinaryReader s_binary_reader = {
.end_module = end_module,
.on_error = on_error,
- // Signature sections
+ // User section
+ .begin_user_section = begin_user_section,
+
+ // Signature section
.begin_signature_section = begin_signature_section,
.on_signature_count = on_count,
.on_signature = on_signature,
@@ -543,8 +556,8 @@ static WasmBinaryReader s_binary_reader = {
.begin_data_section = begin_data_section,
.on_data_segment_count = on_count,
- // Names section
- .begin_names_section = begin_names_section,
+ // Known "User" sections:
+ // - Names section
.on_function_names_count = on_count,
.on_init_expr_i32_const_expr = on_init_expr_i32_const_expr,