Skip to content

Commit bcd03e8

Browse files
authored
Add support for new WASM_SYMBOL_ABS symbol flag (#2305)
See llvm/llvm-project#67493
1 parent 9944d92 commit bcd03e8

File tree

3 files changed

+26
-8
lines changed

3 files changed

+26
-8
lines changed

include/wabt/common.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,8 @@ enum class ComdatType {
328328
#define WABT_SYMBOL_FLAG_EXPLICIT_NAME 0x40
329329
#define WABT_SYMBOL_FLAG_NO_STRIP 0x80
330330
#define WABT_SYMBOL_FLAG_TLS 0x100
331-
#define WABT_SYMBOL_FLAG_MAX 0x1ff
331+
#define WABT_SYMBOL_FLAG_ABS 0x200
332+
#define WABT_SYMBOL_FLAG_MAX 0x3ff
332333

333334
#define WABT_SEGMENT_FLAG_STRINGS 0x1
334335
#define WABT_SEGMENT_FLAG_TLS 0x2

src/binary-reader-objdump.cc

+12-3
Original file line numberDiff line numberDiff line change
@@ -2171,6 +2171,10 @@ Result BinaryReaderObjdump::PrintSymbolFlags(uint32_t flags) {
21712171
PrintDetails(" tls");
21722172
flags &= ~WABT_SYMBOL_FLAG_TLS;
21732173
}
2174+
if (flags & WABT_SYMBOL_FLAG_ABS) {
2175+
PrintDetails(" abs");
2176+
flags &= ~WABT_SYMBOL_FLAG_ABS;
2177+
}
21742178
if (flags != 0) {
21752179
PrintDetails(" unknown_flags=%#x", flags);
21762180
}
@@ -2207,9 +2211,14 @@ Result BinaryReaderObjdump::OnDataSymbol(Index index,
22072211
uint32_t size) {
22082212
PrintDetails(" - %d: D <" PRIstringview ">", index,
22092213
WABT_PRINTF_STRING_VIEW_ARG(name));
2210-
if (!(flags & WABT_SYMBOL_FLAG_UNDEFINED))
2211-
PrintDetails(" segment=%" PRIindex " offset=%d size=%d", segment, offset,
2212-
size);
2214+
if (!(flags & WABT_SYMBOL_FLAG_UNDEFINED)) {
2215+
if (flags & WABT_SYMBOL_FLAG_ABS) {
2216+
PrintDetails(" address=%d size=%d", offset, size);
2217+
} else {
2218+
PrintDetails(" segment=%" PRIindex " offset=%d size=%d", segment, offset,
2219+
size);
2220+
}
2221+
}
22132222
return PrintSymbolFlags(flags);
22142223
}
22152224

test/binary/linking-section.txt

+12-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ section("linking") {
6969
}
7070

7171
section(LINKING_SYMBOL_TABLE) {
72-
num_symbols[5]
72+
num_symbols[6]
7373

7474
type[0]
7575
flags[1]
@@ -88,6 +88,13 @@ section("linking") {
8888
offset[2]
8989
size[1]
9090

91+
type[1]
92+
flags[leb_i32(512)]
93+
str("absolute_data_sym")
94+
segment[0]
95+
offset[leb_i32(1024)]
96+
size[0]
97+
9198
type[0]
9299
flags[0x10]
93100
index[0]
@@ -152,12 +159,13 @@ Custom:
152159
- init functions [count=2]
153160
- 1: priority=5 <global_sym>
154161
- 0: priority=6 <func_sym>
155-
- symbol table [count=5]
162+
- symbol table [count=6]
156163
- 0: F <func_sym> func=0 [ binding=weak vis=default ]
157164
- 1: G <global_sym> global=0 [ binding=local vis=default ]
158165
- 2: D <data_sym> segment=1 offset=2 size=1 [ tls binding=global vis=hidden ]
159-
- 3: F <func_sym> func=0 [ undefined binding=global vis=default ]
160-
- 4: T <table_sym> table=0 [ binding=weak vis=default ]
166+
- 3: D <absolute_data_sym> address=1024 size=0 [ abs binding=global vis=default ]
167+
- 4: F <func_sym> func=0 [ undefined binding=global vis=default ]
168+
- 5: T <table_sym> table=0 [ binding=weak vis=default ]
161169
- comdat groups [count=2]
162170
- comdat1: [count=1]
163171
- segment[1] <data2>

0 commit comments

Comments
 (0)