[llvm] symblize offset (PR #191068)
Derek Schuff via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 8 15:46:45 PDT 2026
https://github.com/dschuff created https://github.com/llvm/llvm-project/pull/191068
- **SymbolizableOjbectFile: Convert Wasm file offset to section offset for DWARF**
- **use assembly for tests**
>From bfcd2f05f3b023517408ec710fe2a9f8340a46e7 Mon Sep 17 00:00:00 2001
From: Derek Schuff <dschuff at chromium.org>
Date: Wed, 8 Apr 2026 19:18:17 +0000
Subject: [PATCH 1/2] SymbolizableOjbectFile: Convert Wasm file offset to
section offset for DWARF
Wasm's object and linking format lacks virtual addresses like ELF et al.
As a result, linked files generally use file offsets as "addresses", whereas
objects and DWARF sections use code section offsets.
This has led to incorrect interpretation of addresses in llvm-objdump
and llvm-symbolizer for linked files.
This change to SerializableObjectFile checks the input ModuleOffset, and
if it falls within a wasm code section, adjusts it to a section offset
before querying the DwarfContext. (For object files, Sec.getAddress() is
0 so it works for object files too). It extends the existing DWARF test
for llvm-symbolizer to include a linked file, and also adds an equivalent
for objdump.
Fixes #129523
---
.../Symbolize/SymbolizableObjectFile.h | 7 ++
.../Symbolize/SymbolizableObjectFile.cpp | 26 +++-
.../tools/llvm-objdump/wasm/linked-dwarf.yaml | 114 ++++++++++++++++++
.../llvm-symbolizer/Inputs/wasm-linked.wasm | Bin 0 -> 923 bytes
.../tools/llvm-symbolizer/wasm-linked.test | 14 +++
5 files changed, 158 insertions(+), 3 deletions(-)
create mode 100644 llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
create mode 100755 llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm
create mode 100644 llvm/test/tools/llvm-symbolizer/wasm-linked.test
diff --git a/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableObjectFile.h b/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableObjectFile.h
index 5ef513f570b03..c31c3ac353fb0 100644
--- a/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableObjectFile.h
+++ b/llvm/include/llvm/DebugInfo/Symbolize/SymbolizableObjectFile.h
@@ -74,6 +74,13 @@ class SymbolizableObjectFile : public SymbolizableModule {
std::unique_ptr<DIContext> DebugInfoContext;
bool UntagAddresses;
+ /// WebAssembly linked files use file offsets for code symbol addresses, but
+ /// DWARF uses section-relative offsets. This helper method converts a module
+ /// file offset into its corresponding section-relative offset, but only if
+ /// the address falls within a Wasm code section.
+ object::SectionedAddress
+ getWasmCodeDwarfOffset(object::SectionedAddress ModuleOffset) const;
+
struct SymbolDesc {
uint64_t Addr;
// If size is 0, assume that symbol occupies the whole memory range up to
diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
index 29fd4d9fda7ad..39c3c1c96f83d 100644
--- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
+++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
@@ -269,6 +269,23 @@ bool SymbolizableObjectFile::shouldOverrideWithSymbolTable(
isa<DWARFContext>(DebugInfoContext.get());
}
+object::SectionedAddress SymbolizableObjectFile::getWasmCodeDwarfOffset(
+ object::SectionedAddress ModuleOffset) const {
+ if (!Module->isWasm())
+ return ModuleOffset;
+ if (ModuleOffset.SectionIndex == object::SectionedAddress::UndefSection)
+ ModuleOffset.SectionIndex =
+ getModuleSectionIndexForAddress(ModuleOffset.Address);
+ for (const SectionRef &Sec : Module->sections()) {
+ if (Sec.getIndex() == ModuleOffset.SectionIndex) {
+ if (Sec.isText())
+ ModuleOffset.Address -= Sec.getAddress();
+ break;
+ }
+ }
+ return ModuleOffset;
+}
+
DILineInfo
SymbolizableObjectFile::symbolizeCode(object::SectionedAddress ModuleOffset,
DILineInfoSpecifier LineInfoSpecifier,
@@ -277,8 +294,9 @@ SymbolizableObjectFile::symbolizeCode(object::SectionedAddress ModuleOffset,
ModuleOffset.SectionIndex =
getModuleSectionIndexForAddress(ModuleOffset.Address);
DILineInfo LineInfo;
+ object::SectionedAddress DWARFOffset = getWasmCodeDwarfOffset(ModuleOffset);
std::optional<DILineInfo> DBGLineInfo =
- DebugInfoContext->getLineInfoForAddress(ModuleOffset, LineInfoSpecifier);
+ DebugInfoContext->getLineInfoForAddress(DWARFOffset, LineInfoSpecifier);
if (DBGLineInfo)
LineInfo = *DBGLineInfo;
@@ -305,8 +323,9 @@ DIInliningInfo SymbolizableObjectFile::symbolizeInlinedCode(
if (ModuleOffset.SectionIndex == object::SectionedAddress::UndefSection)
ModuleOffset.SectionIndex =
getModuleSectionIndexForAddress(ModuleOffset.Address);
+ object::SectionedAddress DWARFOffset = getWasmCodeDwarfOffset(ModuleOffset);
DIInliningInfo InlinedContext = DebugInfoContext->getInliningInfoForAddress(
- ModuleOffset, LineInfoSpecifier);
+ DWARFOffset, LineInfoSpecifier);
// Make sure there is at least one frame in context.
bool EmptyFrameAdded = false;
@@ -358,7 +377,8 @@ std::vector<DILocal> SymbolizableObjectFile::symbolizeFrame(
if (ModuleOffset.SectionIndex == object::SectionedAddress::UndefSection)
ModuleOffset.SectionIndex =
getModuleSectionIndexForAddress(ModuleOffset.Address);
- return DebugInfoContext->getLocalsForAddress(ModuleOffset);
+ object::SectionedAddress DWARFOffset = getWasmCodeDwarfOffset(ModuleOffset);
+ return DebugInfoContext->getLocalsForAddress(DWARFOffset);
}
std::vector<object::SectionedAddress>
diff --git a/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml b/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
new file mode 100644
index 0000000000000..33b0dc3f33b55
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
@@ -0,0 +1,114 @@
+# RUN: yaml2obj %s -o %t.wasm
+# RUN: llvm-objdump -d --line-numbers %t.wasm | FileCheck %s
+
+# CHECK: {{.*}} <__original_main>:
+# CHECK-NEXT: .local i32
+# CHECK-NEXT: ; __original_main():
+# CHECK-NEXT: ; {{.*}}test.c:1
+# CHECK-NEXT: {{.*}}: 23 80 80 80 80 00 global.get 0
+
+--- !WASM
+FileHeader:
+ Version: 0x1
+Sections:
+ - Type: TYPE
+ Signatures:
+ - Index: 0
+ ParamTypes: []
+ ReturnTypes:
+ - I32
+ - Index: 1
+ ParamTypes:
+ - I32
+ - I32
+ ReturnTypes:
+ - I32
+ - Type: FUNCTION
+ FunctionTypes: [ 0, 1 ]
+ - Type: TABLE
+ Tables:
+ - Index: 0
+ ElemType: FUNCREF
+ Limits:
+ Flags: [ HAS_MAX ]
+ Minimum: 0x1
+ Maximum: 0x1
+ - Type: MEMORY
+ Memories:
+ - Minimum: 0x1
+ - Type: GLOBAL
+ Globals:
+ - Index: 0
+ Type: I32
+ Mutable: true
+ InitExpr:
+ Opcode: I32_CONST
+ Value: 65536
+ - Type: EXPORT
+ Exports:
+ - Name: memory
+ Kind: MEMORY
+ Index: 0
+ - Name: main
+ Kind: FUNCTION
+ Index: 1
+ - Type: CODE
+ Functions:
+ - Index: 0
+ Locals:
+ - Type: I32
+ Count: 1
+ Body: 23808080800041106B21002000410036020C412A0F0B
+ - Index: 1
+ Locals: []
+ Body: 1080808080000F0B
+ - Type: CUSTOM
+ Name: .debug_abbrev
+ Payload: 011101250E1305030E10171B0E110112060000022E00110112064018030E3A0B3B0B49133F190000032400030E3E0B0B0B000000
+ - Type: CUSTOM
+ Name: .debug_info
+ Payload: 4200000004000000000004012F0000001D00280000000000000004000000020000001900000002020000001900000004ED00009F2300000001013E0000000300000000050400
+ - Type: CUSTOM
+ Name: .debug_str
+ Payload: 696E74002F622F6F626A64756D702F656D736372697074656E2D72656C6561736573006D61696E00746573742E6300636C616E672076657273696F6E2032332E302E30676974202873736F3A2F2F6368726F6D69756D2F65787465726E616C2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A65637420643733366531626430623938373036636564396236383932313163386466333961626237636434362900
+ - Type: CUSTOM
+ Name: .debug_line
+ Payload: 3600000004001E000000010101FB0E0D00010101010000000100000100746573742E630000000000000502020000000105050A084B0204000101
+ - Type: CUSTOM
+ Name: name
+ FunctionNames:
+ - Index: 0
+ Name: __original_main
+ - Index: 1
+ Name: main
+ GlobalNames:
+ - Index: 0
+ Name: __stack_pointer
+ - Type: CUSTOM
+ Name: producers
+ Languages:
+ - Name: C11
+ Version: ''
+ Tools:
+ - Name: clang
+ Version: '23.0.0git (sso://chromium/external/github.com/llvm/llvm-project d736e1bd0b98706ced9b689211c8df39abb7cd46)'
+ - Type: CUSTOM
+ Name: target_features
+ Features:
+ - Prefix: USED
+ Name: bulk-memory
+ - Prefix: USED
+ Name: bulk-memory-opt
+ - Prefix: USED
+ Name: call-indirect-overlong
+ - Prefix: USED
+ Name: multivalue
+ - Prefix: USED
+ Name: mutable-globals
+ - Prefix: USED
+ Name: nontrapping-fptoint
+ - Prefix: USED
+ Name: reference-types
+ - Prefix: USED
+ Name: sign-ext
+...
diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm b/llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm
new file mode 100755
index 0000000000000000000000000000000000000000..1f48703381672ded54f4d703a4a8ed1e56451434
GIT binary patch
literal 923
zcmchV&u-H|5XNU6r%mHF?jH$SAy803Dp-z_7Nt#*3V{>iA=0%yakpLXTD$9ro)UzR
zkT at Z6;Kqp;fH&a41MnU^0T<S8k$3_Q9?yQW{xtI&1JyYJ0P=pZSb%d1WPa+*=Vab^
zQwu=cw^c$4LP)dL2#}?BwKgZ?#lrQLKh#&3a?GW=bimCi6F}NuYI%o{`L4|tFkZj7
z3tbq)&{-Wn^t}~WuXW#p?^S)RmttII6B@?~XJmui?`$<2o%NfyIvZqj3Bc(=l|0>U
zbdJ5p-ixg#I{=M)(CD0ao at b|kpOuey?Zd=WKC_}*Rlp^YjkjU1K3%Df&8-DEe-rl?
zz~^175OQK;!#>co-+z5=ecRW*+9)OrL~$hJ^Ry>k%Ru~kaLXK3Uh8luFZF&hL
zoQkYFL#3G%-Ti}Jzt_*0>F#MQkE19#Q!-~|9^os4N>Coz;#nE at 5}8Mw&#ppPD0z;F
z>86JVLmb3uKOP+&_J;|kqj-2U+8+#(qjY*OviuH{^wIDEz>j}<a3*kQ2Xf(#jdq{E
zJ8RXe-oF*#y4z}KXx2<fv)OLFbX<E4zExhXpgEFl2mHxIDwZ+Z?W7u&)LUQPBvnNl
znp{i at X)&RKPZhis+kILl7J<{MXp}TV(s(`?z^bhzs5Pcxd`X%$EB5~weXP3k4OJPM
z$rPz673x;t#U;N8uYT#k|K||O!UQ)G%6Z5{%9PzmDD7&w6j{*DOK#YV@)83-FAa at 3
rh8dSJ<vQ3BQW!;xf{84g7N)`z_zI_}P$U?d%K~-K(kv69{S*EGp%464
literal 0
HcmV?d00001
diff --git a/llvm/test/tools/llvm-symbolizer/wasm-linked.test b/llvm/test/tools/llvm-symbolizer/wasm-linked.test
new file mode 100644
index 0000000000000..44c39fdc47527
--- /dev/null
+++ b/llvm/test/tools/llvm-symbolizer/wasm-linked.test
@@ -0,0 +1,14 @@
+## To generate the corresponding WASM executable, run:
+##
+## cat <<'EOF' > test.c
+## int main() {
+## return 42;
+## }
+## EOF
+## clang -g -O0 --target=wasm32-unknown-unknown test.c -c -o test.o
+## wasm-ld test.o -o wasm-linked.wasm --no-entry --export=main
+
+# RUN: llvm-symbolizer -e %p/Inputs/wasm-linked.wasm -f 0x66 | FileCheck %s
+
+# CHECK: __original_main
+# CHECK-NEXT: {{.*}}test.c:1:0
>From 2acf370cd545a82a788f6463ff1d65a86539bcd4 Mon Sep 17 00:00:00 2001
From: Derek Schuff <dschuff at chromium.org>
Date: Wed, 8 Apr 2026 22:37:28 +0000
Subject: [PATCH 2/2] use assembly for tests
---
llvm/test/tools/llvm-objdump/lit.local.cfg | 4 +
.../tools/llvm-objdump/wasm/line-numbers.s | 74 ++++++++++++
.../tools/llvm-objdump/wasm/linked-dwarf.yaml | 114 ------------------
.../llvm-symbolizer/Inputs/wasm-linked.wasm | Bin 923 -> 0 bytes
llvm/test/tools/llvm-symbolizer/lit.local.cfg | 4 +
llvm/test/tools/llvm-symbolizer/wasm-basic.s | 2 +-
.../tools/llvm-symbolizer/wasm-linked.test | 14 ---
7 files changed, 83 insertions(+), 129 deletions(-)
create mode 100644 llvm/test/tools/llvm-objdump/lit.local.cfg
create mode 100644 llvm/test/tools/llvm-objdump/wasm/line-numbers.s
delete mode 100644 llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
delete mode 100755 llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm
create mode 100644 llvm/test/tools/llvm-symbolizer/lit.local.cfg
delete mode 100644 llvm/test/tools/llvm-symbolizer/wasm-linked.test
diff --git a/llvm/test/tools/llvm-objdump/lit.local.cfg b/llvm/test/tools/llvm-objdump/lit.local.cfg
new file mode 100644
index 0000000000000..21771693b720e
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/lit.local.cfg
@@ -0,0 +1,4 @@
+from lit.llvm import llvm_config
+
+if llvm_config.use_lld(required=False):
+ config.available_features.add("lld")
diff --git a/llvm/test/tools/llvm-objdump/wasm/line-numbers.s b/llvm/test/tools/llvm-objdump/wasm/line-numbers.s
new file mode 100644
index 0000000000000..79c533ddb69dc
--- /dev/null
+++ b/llvm/test/tools/llvm-objdump/wasm/line-numbers.s
@@ -0,0 +1,74 @@
+# REQUIRES: webassembly-registered-target, lld
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj %s -o %t.o -g
+# RUN: wasm-ld %t.o -o %t.wasm --no-entry --export=foo --export=bar
+# RUN: llvm-objdump -d --line-numbers %t.o | FileCheck --check-prefix=OBJ %s
+# RUN: llvm-objdump -d --line-numbers %t.wasm | FileCheck --check-prefix=LINKED %s
+
+# This test mirrors test/tools/llvm-symbolizer/wasm-basic.s and tests that line
+# numbers are correctly printed from DWARF information.
+
+.globl foo
+foo:
+ .functype foo () -> ()
+ nop
+ return
+ end_function
+
+.globl bar
+bar:
+ .functype bar (i32) -> (i32)
+ local.get 0
+ nop
+ return
+ end_function
+
+# OBJ: <foo>:
+# OBJ-EMPTY:
+# OBJ-NEXT: ; foo():
+# OBJ-NEXT: ; {{.*}}line-numbers.s:10
+# OBJ-NEXT: 3: 01 nop
+# OBJ-NEXT: ; {{.*}}line-numbers.s:11
+# OBJ-NEXT: 4: 0f return
+# OBJ-NEXT: ; {{.*}}line-numbers.s:12
+# OBJ-NEXT: 5: 0b end
+
+# OBJ: <bar>:
+# OBJ-EMPTY:
+# OBJ-NEXT: ; bar():
+# OBJ-NEXT: ; {{.*}}line-numbers.s:17
+# OBJ-NEXT: 8: 20 00 local.get 0
+# OBJ-NEXT: ; {{.*}}line-numbers.s:18
+# OBJ-NEXT: a: 01 nop
+# OBJ-NEXT: ; {{.*}}line-numbers.s:19
+# OBJ-NEXT: b: 0f return
+# OBJ-NEXT: ; {{.*}}line-numbers.s:20
+# OBJ-NEXT: c: 0b end
+
+
+# Note: The linked version of this test currently bakes in the absolute binary
+# offsets in the code section (for the beginning of each function) because they
+# are relevant. We want to make sure that file offsets are used rather than
+# section offsets. But this does mean that if the output of the linker for the
+# sections that come before Code changes, then this test will have to be updated.
+
+# LINKED: <foo>:
+# LINKED-EMPTY:
+# LINKED-NEXT: ; foo():
+# LINKED-NEXT: ; {{.*}}line-numbers.s:10
+# LINKED-NEXT: 44: 01 nop
+# LINKED-NEXT: ; {{.*}}line-numbers.s:11
+# LINKED-NEXT: {{.*}}: 0f return
+# LINKED-NEXT: ; {{.*}}line-numbers.s:12
+# LINKED-NEXT: {{.*}}: 0b end
+
+# LINKED: <bar>:
+# LINKED-EMPTY:
+# LINKED-NEXT: ; bar():
+# LINKED-NEXT: ; {{.*}}line-numbers.s:17
+# LINKED-NEXT: 49: 20 00 local.get 0
+# LINKED-NEXT: ; {{.*}}line-numbers.s:18
+# LINKED-NEXT: {{.*}}: 01 nop
+# LINKED-NEXT: ; {{.*}}line-numbers.s:19
+# LINKED-NEXT: {{.*}}: 0f return
+# LINKED-NEXT: ; {{.*}}line-numbers.s:20
+# LINKED-NEXT: {{.*}}: 0b end
diff --git a/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml b/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
deleted file mode 100644
index 33b0dc3f33b55..0000000000000
--- a/llvm/test/tools/llvm-objdump/wasm/linked-dwarf.yaml
+++ /dev/null
@@ -1,114 +0,0 @@
-# RUN: yaml2obj %s -o %t.wasm
-# RUN: llvm-objdump -d --line-numbers %t.wasm | FileCheck %s
-
-# CHECK: {{.*}} <__original_main>:
-# CHECK-NEXT: .local i32
-# CHECK-NEXT: ; __original_main():
-# CHECK-NEXT: ; {{.*}}test.c:1
-# CHECK-NEXT: {{.*}}: 23 80 80 80 80 00 global.get 0
-
---- !WASM
-FileHeader:
- Version: 0x1
-Sections:
- - Type: TYPE
- Signatures:
- - Index: 0
- ParamTypes: []
- ReturnTypes:
- - I32
- - Index: 1
- ParamTypes:
- - I32
- - I32
- ReturnTypes:
- - I32
- - Type: FUNCTION
- FunctionTypes: [ 0, 1 ]
- - Type: TABLE
- Tables:
- - Index: 0
- ElemType: FUNCREF
- Limits:
- Flags: [ HAS_MAX ]
- Minimum: 0x1
- Maximum: 0x1
- - Type: MEMORY
- Memories:
- - Minimum: 0x1
- - Type: GLOBAL
- Globals:
- - Index: 0
- Type: I32
- Mutable: true
- InitExpr:
- Opcode: I32_CONST
- Value: 65536
- - Type: EXPORT
- Exports:
- - Name: memory
- Kind: MEMORY
- Index: 0
- - Name: main
- Kind: FUNCTION
- Index: 1
- - Type: CODE
- Functions:
- - Index: 0
- Locals:
- - Type: I32
- Count: 1
- Body: 23808080800041106B21002000410036020C412A0F0B
- - Index: 1
- Locals: []
- Body: 1080808080000F0B
- - Type: CUSTOM
- Name: .debug_abbrev
- Payload: 011101250E1305030E10171B0E110112060000022E00110112064018030E3A0B3B0B49133F190000032400030E3E0B0B0B000000
- - Type: CUSTOM
- Name: .debug_info
- Payload: 4200000004000000000004012F0000001D00280000000000000004000000020000001900000002020000001900000004ED00009F2300000001013E0000000300000000050400
- - Type: CUSTOM
- Name: .debug_str
- Payload: 696E74002F622F6F626A64756D702F656D736372697074656E2D72656C6561736573006D61696E00746573742E6300636C616E672076657273696F6E2032332E302E30676974202873736F3A2F2F6368726F6D69756D2F65787465726E616C2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A65637420643733366531626430623938373036636564396236383932313163386466333961626237636434362900
- - Type: CUSTOM
- Name: .debug_line
- Payload: 3600000004001E000000010101FB0E0D00010101010000000100000100746573742E630000000000000502020000000105050A084B0204000101
- - Type: CUSTOM
- Name: name
- FunctionNames:
- - Index: 0
- Name: __original_main
- - Index: 1
- Name: main
- GlobalNames:
- - Index: 0
- Name: __stack_pointer
- - Type: CUSTOM
- Name: producers
- Languages:
- - Name: C11
- Version: ''
- Tools:
- - Name: clang
- Version: '23.0.0git (sso://chromium/external/github.com/llvm/llvm-project d736e1bd0b98706ced9b689211c8df39abb7cd46)'
- - Type: CUSTOM
- Name: target_features
- Features:
- - Prefix: USED
- Name: bulk-memory
- - Prefix: USED
- Name: bulk-memory-opt
- - Prefix: USED
- Name: call-indirect-overlong
- - Prefix: USED
- Name: multivalue
- - Prefix: USED
- Name: mutable-globals
- - Prefix: USED
- Name: nontrapping-fptoint
- - Prefix: USED
- Name: reference-types
- - Prefix: USED
- Name: sign-ext
-...
diff --git a/llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm b/llvm/test/tools/llvm-symbolizer/Inputs/wasm-linked.wasm
deleted file mode 100755
index 1f48703381672ded54f4d703a4a8ed1e56451434..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 923
zcmchV&u-H|5XNU6r%mHF?jH$SAy803Dp-z_7Nt#*3V{>iA=0%yakpLXTD$9ro)UzR
zkT at Z6;Kqp;fH&a41MnU^0T<S8k$3_Q9?yQW{xtI&1JyYJ0P=pZSb%d1WPa+*=Vab^
zQwu=cw^c$4LP)dL2#}?BwKgZ?#lrQLKh#&3a?GW=bimCi6F}NuYI%o{`L4|tFkZj7
z3tbq)&{-Wn^t}~WuXW#p?^S)RmttII6B@?~XJmui?`$<2o%NfyIvZqj3Bc(=l|0>U
zbdJ5p-ixg#I{=M)(CD0ao at b|kpOuey?Zd=WKC_}*Rlp^YjkjU1K3%Df&8-DEe-rl?
zz~^175OQK;!#>co-+z5=ecRW*+9)OrL~$hJ^Ry>k%Ru~kaLXK3Uh8luFZF&hL
zoQkYFL#3G%-Ti}Jzt_*0>F#MQkE19#Q!-~|9^os4N>Coz;#nE at 5}8Mw&#ppPD0z;F
z>86JVLmb3uKOP+&_J;|kqj-2U+8+#(qjY*OviuH{^wIDEz>j}<a3*kQ2Xf(#jdq{E
zJ8RXe-oF*#y4z}KXx2<fv)OLFbX<E4zExhXpgEFl2mHxIDwZ+Z?W7u&)LUQPBvnNl
znp{i at X)&RKPZhis+kILl7J<{MXp}TV(s(`?z^bhzs5Pcxd`X%$EB5~weXP3k4OJPM
z$rPz673x;t#U;N8uYT#k|K||O!UQ)G%6Z5{%9PzmDD7&w6j{*DOK#YV@)83-FAa at 3
rh8dSJ<vQ3BQW!;xf{84g7N)`z_zI_}P$U?d%K~-K(kv69{S*EGp%464
diff --git a/llvm/test/tools/llvm-symbolizer/lit.local.cfg b/llvm/test/tools/llvm-symbolizer/lit.local.cfg
new file mode 100644
index 0000000000000..21771693b720e
--- /dev/null
+++ b/llvm/test/tools/llvm-symbolizer/lit.local.cfg
@@ -0,0 +1,4 @@
+from lit.llvm import llvm_config
+
+if llvm_config.use_lld(required=False):
+ config.available_features.add("lld")
diff --git a/llvm/test/tools/llvm-symbolizer/wasm-basic.s b/llvm/test/tools/llvm-symbolizer/wasm-basic.s
index 1f425e5259316..864961093bf24 100644
--- a/llvm/test/tools/llvm-symbolizer/wasm-basic.s
+++ b/llvm/test/tools/llvm-symbolizer/wasm-basic.s
@@ -1,4 +1,4 @@
-# REQUIRES: webassembly-registered-target
+# REQUIRES: webassembly-registered-target, lld
# RUN: llvm-mc -triple=wasm32-unknown-unknown -filetype=obj %s -o %t.o -g
# RUN: llvm-symbolizer --basenames --output-style=GNU -e %t.o 1 2 3 4 5 6 7 8 9 10 11 12 13 | FileCheck %s
diff --git a/llvm/test/tools/llvm-symbolizer/wasm-linked.test b/llvm/test/tools/llvm-symbolizer/wasm-linked.test
deleted file mode 100644
index 44c39fdc47527..0000000000000
--- a/llvm/test/tools/llvm-symbolizer/wasm-linked.test
+++ /dev/null
@@ -1,14 +0,0 @@
-## To generate the corresponding WASM executable, run:
-##
-## cat <<'EOF' > test.c
-## int main() {
-## return 42;
-## }
-## EOF
-## clang -g -O0 --target=wasm32-unknown-unknown test.c -c -o test.o
-## wasm-ld test.o -o wasm-linked.wasm --no-entry --export=main
-
-# RUN: llvm-symbolizer -e %p/Inputs/wasm-linked.wasm -f 0x66 | FileCheck %s
-
-# CHECK: __original_main
-# CHECK-NEXT: {{.*}}test.c:1:0
More information about the llvm-commits
mailing list