Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
87d13a4c
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
1 年多 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
87d13a4c
编写于
8月 05, 2012
作者:
R
Rich Felker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
more cleanup of dynamic linker internals
上级
7cb44cd3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
8 deletion
+9
-8
src/ldso/dynlink.c
src/ldso/dynlink.c
+9
-8
未找到文件。
src/ldso/dynlink.c
浏览文件 @
87d13a4c
...
...
@@ -143,8 +143,11 @@ static void *find_sym(struct dso *dso, const char *s, int need_def)
return
def
;
}
static
void
do_relocs
(
unsigned
char
*
base
,
size_t
*
rel
,
size_t
rel_size
,
size_t
stride
,
Sym
*
syms
,
char
*
strings
)
static
void
do_relocs
(
struct
dso
*
dso
,
size_t
*
rel
,
size_t
rel_size
,
size_t
stride
)
{
unsigned
char
*
base
=
dso
->
base
;
Sym
*
syms
=
dso
->
syms
;
char
*
strings
=
dso
->
strings
;
Sym
*
sym
;
const
char
*
name
;
size_t
sym_val
,
sym_size
;
...
...
@@ -165,7 +168,7 @@ static void do_relocs(unsigned char *base, size_t *rel, size_t rel_size, size_t
if
(
!
sym_val
&&
sym
->
st_info
>>
4
!=
STB_WEAK
)
{
snprintf
(
errbuf
,
sizeof
errbuf
,
"Error relocating %s: %s: symbol not found"
,
"???"
,
name
);
dso
->
name
,
name
);
if
(
runtime
)
longjmp
(
rtld_fail
,
1
);
dprintf
(
2
,
"%s
\n
"
,
errbuf
);
_exit
(
127
);
...
...
@@ -484,12 +487,10 @@ static void reloc_all(struct dso *p)
for
(;
p
;
p
=
p
->
next
)
{
if
(
p
->
relocated
)
continue
;
decode_vec
(
p
->
dynv
,
dyn
,
DYN_CNT
);
do_relocs
(
p
->
base
,
(
void
*
)(
p
->
base
+
dyn
[
DT_JMPREL
]),
dyn
[
DT_PLTRELSZ
],
2
+
(
dyn
[
DT_PLTREL
]
==
DT_RELA
),
p
->
syms
,
p
->
strings
);
do_relocs
(
p
->
base
,
(
void
*
)(
p
->
base
+
dyn
[
DT_REL
]),
dyn
[
DT_RELSZ
],
2
,
p
->
syms
,
p
->
strings
);
do_relocs
(
p
->
base
,
(
void
*
)(
p
->
base
+
dyn
[
DT_RELA
]),
dyn
[
DT_RELASZ
],
3
,
p
->
syms
,
p
->
strings
);
do_relocs
(
p
,
(
void
*
)(
p
->
base
+
dyn
[
DT_JMPREL
]),
dyn
[
DT_PLTRELSZ
],
2
+
(
dyn
[
DT_PLTREL
]
==
DT_RELA
));
do_relocs
(
p
,
(
void
*
)(
p
->
base
+
dyn
[
DT_REL
]),
dyn
[
DT_RELSZ
],
2
);
do_relocs
(
p
,
(
void
*
)(
p
->
base
+
dyn
[
DT_RELA
]),
dyn
[
DT_RELASZ
],
3
);
p
->
relocated
=
1
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录