diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2015-02-06 06:48:20 -0800 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2015-02-06 06:48:20 -0800 |
commit | 557cddc9773c1302496ce5eaa652de5622be2ec4 (patch) | |
tree | c5103747d877620947d3865423c2eb209b699a23 /src | |
parent | 2646f6c12a46f859ba35fafa2a42576741443eb3 (diff) | |
download | coreclr-557cddc9773c1302496ce5eaa652de5622be2ec4.tar.gz coreclr-557cddc9773c1302496ce5eaa652de5622be2ec4.tar.bz2 coreclr-557cddc9773c1302496ce5eaa652de5622be2ec4.zip |
Fix missing CHAIN_SUCCESS_COUNTER symbol in libcoreclr.so
Certain versions of the clang toolchain build libcoreclr.so with this symbol undefined. This symbol is just an alias of g_dispatch_cache_chain_success_counter and the issue was probably caused by the fact that we pass the CHAIN_SUCCESS_COUNTER as a parameter to macro and that macro then appends the @GOTPCREL to the symbol. It seems that in the problematic case, the assembler appends the @GOTPCREL to the CHAIN_SUCCESS_COUNTER instead of the original g_dispatch_cache_chain_success_counter symbol.
Changing the
CHAIN_SUCCESS_COUNTER = g_dispatch_cache_chain_success_counter
to
#define CHAIN_SUCCESS_COUNTER g_dispatch_cache_chain_success_counter
fixes the issue.
[tfs-changeset: 1411600]
Diffstat (limited to 'src')
-rw-r--r-- | src/vm/amd64/virtualcallstubamd64.S | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/vm/amd64/virtualcallstubamd64.S b/src/vm/amd64/virtualcallstubamd64.S index 025e165c17..2271631c7c 100644 --- a/src/vm/amd64/virtualcallstubamd64.S +++ b/src/vm/amd64/virtualcallstubamd64.S @@ -10,7 +10,7 @@ // entry is promoted to the front of the chain. This is declared as extern because // the default value (CALL_STUB_CACHE_INITIAL_SUCCESS_COUNT) is defined in the header. // extern size_t g_dispatch_cache_chain_success_counter; -CHAIN_SUCCESS_COUNTER = g_dispatch_cache_chain_success_counter +#define CHAIN_SUCCESS_COUNTER g_dispatch_cache_chain_success_counter // The reason for not using .equ or '=' here is that otherwise the assembler compiles e.g. // mov rax, BACKPATCH_FLAG as mov rax, [BACKPATCH_FLAG] |