diff options
author | Marco Elver <elver@google.com> | 2024-07-08 17:07:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-08 17:07:00 +0200 |
commit | f5b9e11eb8ada0e7cc292f9ecd29a220d1265084 (patch) | |
tree | fe5a32137b690e9bc706028dedb30814ec67db76 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | 385118644ccabe27a634804c7db60734746c170f (diff) | |
download | llvm-f5b9e11eb8ada0e7cc292f9ecd29a220d1265084.zip llvm-f5b9e11eb8ada0e7cc292f9ecd29a220d1265084.tar.gz llvm-f5b9e11eb8ada0e7cc292f9ecd29a220d1265084.tar.bz2 |
[SanitizerBinaryMetadata] Fix multi-version sanitizer metadata (#97848)
It should be valid to combine TUs that have different versions of
sanitizer metadata. However, this had not been possible due to giving
sanitizer metadata sections, constructors, and destructors (that call
callbacks) the same name for different versions.
This would then result in the linker attempting to merge sections that
contain metadata of different versions, as well as picking any one of
the constructors or destructors due to having the same COMDAT key. The
end result is that consumers of this data would end up interpreting the
metadata incorrectly.
Although combining old and new versions is not recommended, more
realistic is combining TUs that have been compiled with different target
code models (which are also encoded in the sanitizer metadata version).
To fix, and properly support multi-version sanitizer metadata, attach
the version to section names and internal constructor and destructor
names. The ABI remains unchanged.
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
0 files changed, 0 insertions, 0 deletions