linux 有线程本地存储 (tls)?,有没有办法确定Linux上的库使用的线程本地存储模型...
我自己遇到了这个错误,在调查时,我来了一个
mailing list post with this info:
If you link a shared object containing IE-model access relocs,the object
will have the DF_STATIC_TLS flag set. By the spec,this means that dlopen
might refuse to load it.
查看/usr/include/elf.h,我们有:
/* Values of `d_un.d_val' in the DT_FLAGS entry. */
...
#define DF_STATIC_TLS 0x00000010 /* Module uses the static TLS model */
因此,您需要测试是否在共享库的DT_FLAGS条目中设置了DF_STATIC_TLS.
为了测试,我使用线程本地存储创建了一段简单的代码:
static __thread int foo;
void set_foo(int new) {
foo = new;
}
然后我用两个不同的线程本地存储模型编译了两次:
gcc -ftls-model=initial-exec -fPIC -c tls.c -o tls-initial-exec.o
gcc -shared tls-initial-exec.o -o tls-initial-exec.so
gcc -ftls-model=global-dynamic -fPIC -c tls.c -o tls-global-dynamic.o
gcc -shared tls-global-dynamic.o -o tls-global-dynamic.so
当然,我可以看到使用readelf的两个库之间的区别:
$readelf --dynamic tls-initial-exec.so
Dynamic section at offset 0xe00 contains 25 entries:
Tag Type Name/Value
...
0x000000000000001e (FLAGS) STATIC_TLS
tls-global-dynamic.so版本没有DT_FLAGS条目,大概是因为它没有设置任何标志.因此,使用readelf和grep创建脚本以查找受影响的库应该相当容易.
linux 有线程本地存储 (tls)?,有没有办法确定Linux上的库使用的线程本地存储模型...相关推荐
- 关于Linux线程的线程栈以及TLS
说明: a. 本文描述Linux NPTL的线程栈简要实现以及线程本地存储的原理,实验环境中Linux内核版本为2.6.32,glibc版本是2.12.1,Linux发行版为ubuntu,硬件平台为x ...
- linux mongo 服务器,如何用MongoDB在Linux服务器上创建大量连接和线程的记忆
最近,我们想对MongoDB在大量连接中的行为进行基准测试.这使我不得不重新讨论该主题,并刷新关于如何在Linux服务器上创建大量连接和线程的记忆.在此过程中,我发现了一些没有使用过的新可调参数. M ...
- 本地套接字示例[来源:Advanced Linux Programming]
本地套接字示例[来源:Advanced Linux Programming] 要通过套接字连接同一台主机上的进程,可以使用符号常量 PF_LOCAL 和 PF_UNIX所代表的本地命名空间.它们被称为 ...
- 本地Windows系统远程连接滴滴云Linux云服务器
如何使用Windows系统远程连接滴滴云服务器是一些开发者比较关心的问题.本文为有这类需求的开发人员介绍一款简单易用.免费且开源的软件--PuTTY供参考. 一.Putty介绍 PuTTY是一个免费的 ...
- C++信号量实现线程间同步,windows使用SetEvent,linux使用sem_t,QT测试
目录 windows使用CreateEvent.SetEvent.ResetEvent.WaitForSingleObject linux使用sem_init.sem_wait.sem_trywait ...
- linux 个人云存储_2020年搭建NAS,你应该这样选!联想个人云存储A1深度体验
写这篇文章之前,我的某马NAS已经吃灰2年,这两年我都是用一个5盘位30TB移动硬盘柜作为日常PC文件的冷备份存储外设,用一个叫做FreeFileSync的软件做为一键同步的工具,详情大家可以查看我早 ...
- 如何高效放鸽子——线程的创建_莫韵乐的Linux王国
如何高效放鸽子--线程的创建.等待和销毁 前文再续,书接上一回 今天我们将会采访一位放鸽子高手,探讨如何高效地放放鸽子 记者:您好,真是百闻不如一见,没想到传说中的鸽王相貌平平却有如此大的能耐 鸽王: ...
- 上传阿里云oss对象型存储 本地文件和上传流上传
上传阿里云oss对象型存储 本地文件和上传流上传 import java.io.ByteArrayInputStream; import java.io.File; import java.io.Fi ...
- windows无法启动 bcd linux efi,bcdedit 无法打开启动配置数据存储的终极解决办法
对于Windows NT6系列的用户来说,现在的系统引导趋势是采用UEFI+GPT模式,,那么在GPT分区下,windows系列引导故障处理程序有bcdedit,bcdboot等..正常情况下,执行b ...
最新文章
- 四种Sandcastle方法生成c#.net帮助类帮助文档
- jira图片_JIRA使用不求人-从菜鸟到高手
- 让 Windows 7 定时待机
- c++实现字符串类的封装
- python手把手教程_【Python 1-7】Python手把手教程之——详解列表List
- 针对视觉位姿估计特征点优化问题的详细研究
- python动力学建模与仿真_PyMC3中的简单动力学模型
- 神奇的机器人评课_《机器人》教学反思
- PyTorch学习—6.PyTorch数据读取机制Dataloader与Dataset
- Android SDK下载安装及配置教程
- java求职英文简历范本2篇_JAVA英文求职简历范文
- 怎么提高文公写作水平?公文写作礼仪类模板(1)
- 你理解的智能家居就是智能家居么?
- (附源码)计算机毕业设计SSM-志愿者管理系统
- 前端如何设置浏览器网页标签页前的小图标favicon.ico
- LambdaQueryWrapper和QueryWapper的区别
- 用单片机的RAM虚拟U盘(文件系统:Fat16)
- XLA编译器用于JIT加速
- 计算机专业13.3寸电脑,13.3寸笔记本有多大_13.3英寸笔记本有多大
- 一年过去了,Uber 的致命事故给我们上了哪些生动的警示课?...
热门文章
- visual studio 2015 2017 key vs2015 vs2017密钥
- 《Linux 性能及调优指南》1.4 硬盘I/O子系统
- java代码求IP和mac地址
- Python函数式编程,map/reduce,filter和sorted
- SpringBoot与JdbcTemplate的完美结合
- 如何给100亿个数字排序
- 数据在内存中的大小端模式存储
- 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
- [20190226]测试使用bbed恢复索引.txt
- 一道考查request导致的安全性问题的ctf题