问题描述
我正在尝试使用线程本地存储,了解 riscv 上的用法
下面是我在做什么:
参考以下文档中的 TLS 部分 https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md
__thread int TLS_var1 __attribute__((tls_model("local-exec")));
__thread int TLS_var2 __attribute__((tls_model("local-exec")))
posix_thread1(){
TLS_var1++;
..
}
posix_thread1(){
TLS_var2++;
..
}
- 链接器脚本包含以下部分
.tdata :
{
PROVIDE_HIDDEN (__tdata_start = .);
*(.tdata .tdata.* .gnu.linkonce.td.*)
}
.tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
- 我正在使用编译器选项构建代码:
-mcmodel=medany -static -march=rv64imac -mabi=lp64 -ggdb -Og -ftls-model=local-exec
问题: 我不确定应该将 $tp(线程指针)分配给什么? 如何找出线程控制块区域的开始?
请让我知道,我缺少使用 TLS 工作的基本程序。 谢谢, 安妮
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)