hanchenye-llvm-project/lld
Sam Clegg 59f959ff33 [WebAssembly] Relax signature checking for undefined functions that are not called directly
When function signatures don't match and the undefined function is not
called directly (i.e. only has its address taken) we don't issue a
warning or create a runtime thunk for the undefined function.

Instead in this case we simply use the defined version of the function.
This is possible since checking signatures of dynamic calls happens
at runtime so any invalid usage will still result in a runtime error.

This is needed to allow C++ programs to link without generating
warnings.  Its not uncommon in C++ for vtables to be populated by
function address whee the signature of the function is not known in the
compilation unit.  In this case clang declares the method as void(void)
and relies on the vtable caller casting the data back to the correct
signature.

Fixes: https://bugs.llvm.org/show_bug.cgi?id=40412

Differential Revision: https://reviews.llvm.org/D62153

llvm-svn: 361678
2019-05-24 22:45:08 +00:00
..
COFF [COFF] De-virtualize Chunk and SectionChunk 2019-05-24 20:25:40 +00:00
Common Fail early if an output file is not writable 2019-03-11 16:30:55 +00:00
ELF [WebAssebmly] Add support for --wrap 2019-05-24 14:14:25 +00:00
MinGW [MinGW] Set the right updated option help for the updated pdb option. NFC 2019-05-18 04:20:31 +00:00
cmake/modules
docs [docs] Fix troff macro (.F1 -> .Fl) in ld.lld.1 2019-05-22 02:15:25 +00:00
include/lld [WebAssebmly] Add support for --wrap 2019-05-24 14:14:25 +00:00
lib Use llvm::stable_sort 2019-04-23 02:42:06 +00:00
test [WebAssembly] Relax signature checking for undefined functions that are not called directly 2019-05-24 22:45:08 +00:00
tools/lld Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
unittests Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
utils Python 2/3 compatibility 2019-03-20 07:42:13 +00:00
wasm [WebAssembly] Relax signature checking for undefined functions that are not called directly 2019-05-24 22:45:08 +00:00
.arcconfig
.clang-format
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00
README.md

README.md

LLVM Linker (lld)

This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.

lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.

Benchmarking

In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.

It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz

The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.