summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/binary-reader-objdump.cc18
-rw-r--r--src/common.h6
-rw-r--r--test/binary/linking_section.txt14
3 files changed, 32 insertions, 6 deletions
diff --git a/src/binary-reader-objdump.cc b/src/binary-reader-objdump.cc
index 836bf7fa..5fe39adb 100644
--- a/src/binary-reader-objdump.cc
+++ b/src/binary-reader-objdump.cc
@@ -1072,8 +1072,22 @@ Result BinaryReaderObjdump::OnSymbolInfoCount(Index count) {
}
Result BinaryReaderObjdump::OnSymbolInfo(string_view name, uint32_t flags) {
- PrintDetails(" - <" PRIstringview "> flags=0x%x\n",
- WABT_PRINTF_STRING_VIEW_ARG(name), flags);
+ const char* binding_name = nullptr;
+ SymbolBinding binding = static_cast<SymbolBinding>(flags & 0x3);
+ switch (binding) {
+ case SymbolBinding::Global:
+ binding_name = "GLOBAL";
+ break;
+ case SymbolBinding::Local:
+ binding_name = "LOCAL ";
+ break;
+ case SymbolBinding::Weak:
+ binding_name = "WEAK ";
+ break;
+ }
+
+ PrintDetails(" - %s <" PRIstringview ">\n", binding_name,
+ WABT_PRINTF_STRING_VIEW_ARG(name));
return Result::Ok;
}
diff --git a/src/common.h b/src/common.h
index 78fe710f..2b14c242 100644
--- a/src/common.h
+++ b/src/common.h
@@ -227,6 +227,12 @@ enum class LinkingEntryType {
SymbolInfo = 2,
};
+enum class SymbolBinding {
+ Global = 0,
+ Weak = 1,
+ Local = 2,
+};
+
/* matches binary format, do not change */
enum class ExternalKind {
Func = 0,
diff --git a/test/binary/linking_section.txt b/test/binary/linking_section.txt
index 699c9c58..aaa0e6f6 100644
--- a/test/binary/linking_section.txt
+++ b/test/binary/linking_section.txt
@@ -7,10 +7,14 @@ section("linking") {
length[1]
stack_global[3]
subsection[2]
- length[6]
- num_symbols[1]
+ length[16]
+ num_symbols[3]
str("foo")
flags[1]
+ str("bar")
+ flags[2]
+ str("baz")
+ flags[0]
}
(;; STDOUT ;;;
@@ -21,6 +25,8 @@ Section Details:
Custom:
- name: "linking"
- stack pointer global: 3
- - symbol info [count=1]
- - <foo> flags=0x1
+ - symbol info [count=3]
+ - WEAK <foo>
+ - LOCAL <bar>
+ - GLOBAL <baz>
;;; STDOUT ;;)