This is an archive of the discontinued LLVM Phabricator instance.

[lld][WebAssembly] Remove relocation target verification
ClosedPublic

Authored by sbc100 on May 11 2021, 11:21 AM.

Details

Summary

We have this extra step in wasm-ld that doesn't exist in other lld
backend which verifies the existing contents of the relocation targets.
This was originally intended as an extra form of double checking and an
aid to compiler developers. However it has always been somewhat
contravertial and there have been suggestions in the past the we simply
remove it.

My motivation for removing it now is that its causing me a headache
when trying to fix an issue with negative addends. In the case of
negative addends that final result can be wrapped/negative but this
checking code would require significant modifiation to be able to deal
with that case. For example with some test cases I'm looking at I'm
seeing error like this:

wasm-ld: warning: /usr/local/google/home/sbc/dev/wasm/llvm-build/tools/lld/test/wasm/Output/merge-string.s.tmp.o:(.rodata_relocs): unexpected existing value for R_WASM_MEMORY_ADDR_I32: existing=FFFFFFFA expected=FFFFFFFFFFFFFFFA

Rather than try to refactor calcExpectedValue to somehow return two
different types of results (32 and 64-bit) depending on the relocation
type, I think we can just remove this code.

Diff Detail

Event Timeline

sbc100 created this revision.May 11 2021, 11:21 AM
sbc100 requested review of this revision.May 11 2021, 11:21 AM
Herald added a project: Restricted Project. · View Herald TranscriptMay 11 2021, 11:21 AM
dschuff accepted this revision.May 11 2021, 11:34 AM
dschuff added inline comments.
lld/test/wasm/reloc-addend.s
39

Does it make sense to test negative addends for other reloc types too?

This revision is now accepted and ready to land.May 11 2021, 11:34 AM
sbc100 added inline comments.May 11 2021, 12:03 PM
lld/test/wasm/reloc-addend.s
39

Yes.... although I might push that to a followup since this change is mostly about removing the checker.

This revision was landed with ongoing or failed builds.May 11 2021, 12:06 PM
This revision was automatically updated to reflect the committed changes.