“30fbb9fc7cd73abc32ff71ceb59e9a3be37ac128”上不存在“hw/net/rtl8139.c”
提交 f1292e3d 编写于 作者: R Rich Felker

fix omission of dtv setup in static linked programs on TLS variant I archs

apparently this was never noticed before because the linker normally
optimizes dynamic TLS models to non-dynamic ones when static linking,
thus eliminating the calls to __tls_get_addr which crash when the dtv
is missing. however, some libsupc++ code on ARM was calling
__tls_get_addr when static linked and crashing. the reason is unclear
to me, but with this issue fixed it should work now anyway.
上级 c07da2e9
...@@ -26,9 +26,9 @@ void *__copy_tls(unsigned char *mem) ...@@ -26,9 +26,9 @@ void *__copy_tls(unsigned char *mem)
mem += libc.tls_size - sizeof(struct pthread); mem += libc.tls_size - sizeof(struct pthread);
mem -= (uintptr_t)mem & (align-1); mem -= (uintptr_t)mem & (align-1);
td = (pthread_t)mem; td = (pthread_t)mem;
td->dtv = dtv;
mem -= size; mem -= size;
#endif #endif
td->dtv = dtv;
dtv[1] = mem; dtv[1] = mem;
memcpy(mem, image, len); memcpy(mem, image, len);
return td; return td;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册