Commit da8f61c1 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

dump: Add GS-TLS handling

Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@gmail.com>
parent 1f7018a1
...@@ -552,10 +552,14 @@ static int dump_task_tls(pid_t pid, struct desc_struct *tls_array, int size) ...@@ -552,10 +552,14 @@ static int dump_task_tls(pid_t pid, struct desc_struct *tls_array, int size)
memzero(tls_array, sizeof(*tls_array) * size); memzero(tls_array, sizeof(*tls_array) * size);
/* pure x86-64 has a base address only */ /* Pure x86-64 has a base addresses only */
ret = sys_arch_prctl(ARCH_GET_FS, &tls_array[0].base_addr); ret = sys_arch_prctl(ARCH_GET_FS, &tls_array[FS_TLS].base_addr);
if (ret) if (ret)
pr_err("Failed to obtain TLS entry: %d\n", ret); pr_err("Failed to obtain FS_TLS entry: %d\n", ret);
ret = sys_arch_prctl(ARCH_GET_GS, &tls_array[GS_TLS].base_addr);
if (ret)
pr_err("Failed to obtain GS_TLS entry: %d\n", ret);
err: err:
return ret; return ret;
......
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
#define ARCH_GET_FS 0x1003 #define ARCH_GET_FS 0x1003
#define ARCH_GET_GS 0x1004 #define ARCH_GET_GS 0x1004
#define FS_TLS 0
#define GS_TLS 1
/* some constants for ptrace */ /* some constants for ptrace */
#define PTRACE_SEIZE 0x4206 #define PTRACE_SEIZE 0x4206
#define PTRACE_INTERRUPT 0x4207 #define PTRACE_INTERRUPT 0x4207
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment