summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/FrontendActions.cpp
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-04-29 00:32:00 +0000
committerRui Ueyama <ruiu@google.com>2014-04-29 00:32:00 +0000
commit72d57ab32e3ec8d59c40ee13344e3692139ca737 (patch)
tree62bfb9576d968c6fb5e6a9fc72bf42f8a7956ebd /clang/lib/Frontend/FrontendActions.cpp
parent612bb69bf70a67780617421d2937b97f0e1357db (diff)
downloadbcm5719-llvm-72d57ab32e3ec8d59c40ee13344e3692139ca737.tar.gz
bcm5719-llvm-72d57ab32e3ec8d59c40ee13344e3692139ca737.zip
[PECOFF] Fix _imp_ implicit symbols.
Implicit symbol for local use implemented in r207141 was not fully compatible with MSVC link.exe. In r207141, I implemented the feature in such way that implicit symbols are defined only when they are exported with /EXPORT option. After that I found that implicit symbols are defined not only for dllexported symbols but for all defined symbols. Actually _imp_ implicit symbols have no relationship with the dllexport feature. You could add _imp_ to any symbol to get a pointer to the symbol, whether the symbol is dllexported or not. It looks pretty weird to me but that's what we want if link.exe behaves that way. Here is a bit about the implementation: Creating all implicit symbols beforehand is going to be a huge waste of resource. This feature is rarely used, and MSVC link.exe even prints out a warning message when it finds this feature is being used. So we create implicit symbols on demand. There is an archive file that creates implicit symbols when they are needed. llvm-svn: 207476
Diffstat (limited to 'clang/lib/Frontend/FrontendActions.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud