summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2015-02-06 06:48:20 -0800
committerJan Vorlicek <janvorli@microsoft.com>2015-02-06 06:48:20 -0800
commit557cddc9773c1302496ce5eaa652de5622be2ec4 (patch)
treec5103747d877620947d3865423c2eb209b699a23 /src
parent2646f6c12a46f859ba35fafa2a42576741443eb3 (diff)
downloadcoreclr-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.S2
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]