Skip to content

Commit 15a6d4e

Browse files
committed
1 parent a8066e6 commit 15a6d4e

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

src/wasm-binary.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ extern const char* Dylink;
414414
extern const char* Dylink0;
415415
extern const char* Linking;
416416
extern const char* Producers;
417+
extern const char* BuildId;
417418
extern const char* TargetFeatures;
418419

419420
extern const char* AtomicsFeature;

src/wasm/wasm-binary.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#include <algorithm>
1818
#include <fstream>
19+
#include <iomanip>
1920

2021
#include "ir/eh-utils.h"
2122
#include "ir/module-utils.h"
@@ -1211,7 +1212,31 @@ void WasmBinaryWriter::initializeDebugInfo() {
12111212
}
12121213

12131214
void WasmBinaryWriter::writeSourceMapProlog() {
1214-
*sourceMap << "{\"version\":3,\"sources\":[";
1215+
*sourceMap << "{\"version\":3,";
1216+
1217+
for (const auto& section : wasm->customSections) {
1218+
if (section.name == BinaryConsts::CustomSections::BuildId) {
1219+
U32LEB ret;
1220+
size_t pos = 0;
1221+
ret.read([&]() { return section.data[pos++]; });
1222+
1223+
if (section.data.size() != pos + ret.value) {
1224+
std::cerr
1225+
<< "warning: build id section with an incorrect size detected!\n";
1226+
break;
1227+
}
1228+
1229+
*sourceMap << "\"debugId\":\"";
1230+
for (size_t i = pos; i < section.data.size(); i++) {
1231+
*sourceMap << std::setfill('0') << std::setw(2) << std::hex
1232+
<< +section.data[i];
1233+
}
1234+
*sourceMap << "\",";
1235+
break;
1236+
}
1237+
}
1238+
1239+
*sourceMap << "\"sources\":[";
12151240
for (size_t i = 0; i < wasm->debugInfoFileNames.size(); i++) {
12161241
if (i > 0) {
12171242
*sourceMap << ",";

src/wasm/wasm.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ const char* Dylink = "dylink";
3636
const char* Dylink0 = "dylink.0";
3737
const char* Linking = "linking";
3838
const char* Producers = "producers";
39+
const char* BuildId = "build_id";
3940
const char* TargetFeatures = "target_features";
4041
const char* AtomicsFeature = "atomics";
4142
const char* BulkMemoryFeature = "bulk-memory";

0 commit comments

Comments
 (0)