2004-08-08 Zoltan Varga <vargaz@freemail.hu>
+ * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
+ for gcc-3.4.
+
+ * Makefile.am: Statically link mono against libmono on AMD64.
+
* mini-amd64.c inssel-amd64.brg: Optimizations.
2004-08-07 Zoltan Varga <vargaz@freemail.hu>
if (lmf_tls_offset != -1) {
/* Load lmf quicky using the FS register */
x86_prefix (code, X86_FS_PREFIX);
- amd64_mov_reg_mem (code, AMD64_RAX, 0, 8);
- amd64_mov_reg_membase (code, AMD64_RAX, AMD64_RAX, lmf_tls_offset, 8);
+ amd64_mov_reg_mem (code, AMD64_RAX, lmf_tls_offset, 8);
}
else {
/*
* Determine the offset of mono_lfm_addr inside the TLS structures
* by disassembling the function above.
*/
-
/* This is generated by gcc 3.3.2 */
if ((code [0] == 0x55) && (code [1] == 0x48) && (code [2] == 0x89) &&
(code [3] == 0xe5) && (code [4] == 0x64) && (code [5] == 0x48) &&
(code [9] == 0x00) && (code [10] == 0x00) && (code [11] == 0x00) &&
(code [12] == 0x0) && (code [13] == 0x48) && (code [14] == 0x8b) &&
(code [15] == 0x80)) {
- lmf_tls_offset = *(int*)&(code [16]);
+ lmf_tls_offset = *(gint32*)&(code [16]);
+ } else if
+ /* This is generated by gcc-3.4.1 */
+ ((code [0] == 0x55) && (code [1] == 0x48) && (code [2] == 0x89) &&
+ (code [3] == 0xe5) && (code [4] == 0x64) && (code [5] == 0x48) &&
+ (code [6] == 0x8b) && (code [7] == 0x04) && (code [8] == 0x25)) {
+ lmf_tls_offset = *(gint32*)&(code [9]);
}
}