内部静态变量不是固定初始化为零么?
【 在 feiy (null) 的大作中提到: 】
能这么干,早就这么干了。我的目的是,给你一个现成的(外来)封装包(库),也就是说,你没法改人家的封装包库了。这个封装包里由多个obj模块组成,想获取其中某个obj所分配的bss段的起始地址。
找了好多办法,尝试了好多方式,都不行,只要人家封装包里没有对这个单独的obj定义段,如果多个obj使用的是通用的段名定义,那就没招。
不过后来突然想到,既然LD文件可以对每个封装文件(大多数是我们常数的库文件)指定段基地址,而gcc本身是支持从库里提取obj也就是说,也就是说,可以把期待的obj文件给拆出来做成一个单独的封装库,然后对这个在LD文件里进行处理,就可以实现目的了。 所以,绕了个弯子给解决了。
我也是没办法,国内某厂商提供的库文件,存在一个稳定性问题的bug,后来分析发现,是某子模块内部的一个内部静态变量没有初始化造成的(讲一声粗话kao),又没有提供对外的接口,只好采取这种暴力的方法了。
【 在 tom6bj 的大作中提到: 】
: 哦, 是要具体某个obj里的bss...
: 把你这个源文件的全局变量全部包到一个struct里不就完了, 我一直这么干
:
--
FROM 98.126.12.*