Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_hotspot
提交
666c66bf
D
dragonwell8_hotspot
项目概览
openanolis
/
dragonwell8_hotspot
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_hotspot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
666c66bf
编写于
2月 14, 2017
作者:
Y
ysuenaga
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8173941: SA does not work if executable is DSO
Reviewed-by: aph, dsamersoff
上级
985d50e2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
3 deletion
+24
-3
agent/src/os/linux/elfmacros.h
agent/src/os/linux/elfmacros.h
+2
-0
agent/src/os/linux/ps_core.c
agent/src/os/linux/ps_core.c
+22
-3
未找到文件。
agent/src/os/linux/elfmacros.h
浏览文件 @
666c66bf
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
#define ELF_NHDR Elf64_Nhdr
#define ELF_NHDR Elf64_Nhdr
#define ELF_DYN Elf64_Dyn
#define ELF_DYN Elf64_Dyn
#define ELF_ADDR Elf64_Addr
#define ELF_ADDR Elf64_Addr
#define ELF_AUXV Elf64_auxv_t
#define ELF_ST_TYPE ELF64_ST_TYPE
#define ELF_ST_TYPE ELF64_ST_TYPE
...
@@ -45,6 +46,7 @@
...
@@ -45,6 +46,7 @@
#define ELF_NHDR Elf32_Nhdr
#define ELF_NHDR Elf32_Nhdr
#define ELF_DYN Elf32_Dyn
#define ELF_DYN Elf32_Dyn
#define ELF_ADDR Elf32_Addr
#define ELF_ADDR Elf32_Addr
#define ELF_AUXV Elf32_auxv_t
#define ELF_ST_TYPE ELF32_ST_TYPE
#define ELF_ST_TYPE ELF32_ST_TYPE
...
...
agent/src/os/linux/ps_core.c
浏览文件 @
666c66bf
...
@@ -642,6 +642,18 @@ static bool core_handle_note(struct ps_prochandle* ph, ELF_PHDR* note_phdr) {
...
@@ -642,6 +642,18 @@ static bool core_handle_note(struct ps_prochandle* ph, ELF_PHDR* note_phdr) {
if
(
core_handle_prstatus
(
ph
,
descdata
,
notep
->
n_descsz
)
!=
true
)
{
if
(
core_handle_prstatus
(
ph
,
descdata
,
notep
->
n_descsz
)
!=
true
)
{
return
false
;
return
false
;
}
}
}
else
if
(
notep
->
n_type
==
NT_AUXV
)
{
// Get first segment from entry point
ELF_AUXV
*
auxv
=
(
ELF_AUXV
*
)
descdata
;
while
(
auxv
->
a_type
!=
AT_NULL
)
{
if
(
auxv
->
a_type
==
AT_ENTRY
)
{
// Set entry point address to address of dynamic section.
// We will adjust it in read_exec_segments().
ph
->
core
->
dynamic_addr
=
auxv
->
a_un
.
a_val
;
break
;
}
auxv
++
;
}
}
}
p
=
descdata
+
ROUNDUP
(
notep
->
n_descsz
,
4
);
p
=
descdata
+
ROUNDUP
(
notep
->
n_descsz
,
4
);
}
}
...
@@ -826,7 +838,13 @@ static bool read_exec_segments(struct ps_prochandle* ph, ELF_EHDR* exec_ehdr) {
...
@@ -826,7 +838,13 @@ static bool read_exec_segments(struct ps_prochandle* ph, ELF_EHDR* exec_ehdr) {
// from PT_DYNAMIC we want to read address of first link_map addr
// from PT_DYNAMIC we want to read address of first link_map addr
case
PT_DYNAMIC
:
{
case
PT_DYNAMIC
:
{
ph
->
core
->
dynamic_addr
=
exec_php
->
p_vaddr
;
if
(
exec_ehdr
->
e_type
==
ET_EXEC
)
{
ph
->
core
->
dynamic_addr
=
exec_php
->
p_vaddr
;
}
else
{
// ET_DYN
// dynamic_addr has entry point of executable.
// Thus we should substract it.
ph
->
core
->
dynamic_addr
+=
exec_php
->
p_vaddr
-
exec_ehdr
->
e_entry
;
}
print_debug
(
"address of _DYNAMIC is 0x%lx
\n
"
,
ph
->
core
->
dynamic_addr
);
print_debug
(
"address of _DYNAMIC is 0x%lx
\n
"
,
ph
->
core
->
dynamic_addr
);
break
;
break
;
}
}
...
@@ -1024,8 +1042,9 @@ struct ps_prochandle* Pgrab_core(const char* exec_file, const char* core_file) {
...
@@ -1024,8 +1042,9 @@ struct ps_prochandle* Pgrab_core(const char* exec_file, const char* core_file) {
goto
err
;
goto
err
;
}
}
if
(
read_elf_header
(
ph
->
core
->
exec_fd
,
&
exec_ehdr
)
!=
true
||
exec_ehdr
.
e_type
!=
ET_EXEC
)
{
if
(
read_elf_header
(
ph
->
core
->
exec_fd
,
&
exec_ehdr
)
!=
true
||
print_debug
(
"executable file is not a valid ELF ET_EXEC file
\n
"
);
((
exec_ehdr
.
e_type
!=
ET_EXEC
)
&&
(
exec_ehdr
.
e_type
!=
ET_DYN
)))
{
print_debug
(
"executable file is not a valid ELF file
\n
"
);
goto
err
;
goto
err
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录