Page MenuHomePhabricator

[lld][WebAssembly] Initial support merging string data
Needs ReviewPublic

Authored by sbc100 on Feb 28 2021, 10:03 PM.

Details

Reviewers
dschuff
Summary

This change adds support for a new WASM_SEG_FLAG_STRINGS flag in
the object format which works in a similar fashion to SHF_STRINGS
in the ELF world.

Unlike the ELF linker this support is currently limited:

  • No support for SHF_MERGE (non-string merging)
  • Always do full tail merging ("lo" can be merged with "hello")
  • Only support single byte strings (p2align 0)

Like the ELF linker merging is only performed at -O1 and above.

This fixes part of https://bugs.llvm.org/show_bug.cgi?id=48828,
although crucially it doesn't not currently support debug sections
because they are not represented by data segments (they are custom
sections)

Diff Detail

Event Timeline

sbc100 created this revision.Feb 28 2021, 10:03 PM
sbc100 requested review of this revision.Feb 28 2021, 10:03 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 28 2021, 10:03 PM