summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-11-14 20:53:20 +0100
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-11-14 20:53:20 +0100
commited78237ef7c31fb1d7dc80e2c2e07484e1216727 (patch)
tree77b47858d8af36f03c5b75c3c9d8c08905d4808b
parent954a7b0f64346339ef12fb9c04cd2912b72c749d (diff)
downloadelfutils-ed78237ef7c31fb1d7dc80e2c2e07484e1216727.tar.gz
Fix dwfl_attach_state machine->elf
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
-rw-r--r--libdwfl/ChangeLog12
-rw-r--r--libdwfl/dwfl_frame.c6
-rw-r--r--libdwfl/libdwfl.h14
-rw-r--r--libdwfl/linux-core-attach.c4
-rw-r--r--libdwfl/linux-pid-attach.c2
5 files changed, 25 insertions, 13 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 95e3cd7c..561017b1 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,15 @@
+2013-11-14 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ Fix dwfl_attach_state machine->elf.
+ * dwfl_frame.c (dwfl_attach_state): Change parameter machine to elf.
+ Call ebl_openbackend instead of ebl_openbackend_machine.
+ * libdwfl.h (dwfl_attach_state): Change parameter machine to elf.
+ Update the function description.
+ * linux-core-attach.c (__libdwfl_attach_state_for_core): Pass CORE to
+ dwfl_attach_state.
+ * linux-pid-attach.c (__libdwfl_attach_state_for_pid): Pass NULL to
+ dwfl_attach_state.
+
2013-11-06 Jan Kratochvil <jan.kratochvil@redhat.com>
Provide __libdwfl_module_getsym to get dwfl_file *.
diff --git a/libdwfl/dwfl_frame.c b/libdwfl/dwfl_frame.c
index 11376c6e..f2863503 100644
--- a/libdwfl/dwfl_frame.c
+++ b/libdwfl/dwfl_frame.c
@@ -131,7 +131,7 @@ process_alloc (Dwfl *dwfl)
}
bool
-dwfl_attach_state (Dwfl *dwfl, int machine, pid_t pid,
+dwfl_attach_state (Dwfl *dwfl, Elf *elf, pid_t pid,
const Dwfl_Thread_Callbacks *thread_callbacks, void *arg)
{
if (thread_callbacks == NULL || thread_callbacks->next_thread == NULL
@@ -147,9 +147,9 @@ dwfl_attach_state (Dwfl *dwfl, int machine, pid_t pid,
}
Ebl *ebl;
bool ebl_close;
- if (machine != EM_NONE)
+ if (elf != NULL)
{
- ebl = ebl_openbackend_machine (machine);
+ ebl = ebl_openbackend (elf);
ebl_close = true;
}
else
diff --git a/libdwfl/libdwfl.h b/libdwfl/libdwfl.h
index bbabb708..303f79cc 100644
--- a/libdwfl/libdwfl.h
+++ b/libdwfl/libdwfl.h
@@ -625,13 +625,13 @@ typedef struct
} Dwfl_Thread_Callbacks;
/* PID is the process id associated with the DWFL state. Architecture of DWFL
- modules is specified by MACHINE. Use EM_NONE to detect architecture from
- DWFL. If EBL is NULL the function will detect it from arbitrary Dwfl_Module
- of DWFL. DWFL_ARG is the callback backend state. DWFL_ARG will be provided
- to the callbacks. *THREAD_CALLBACKS function pointers must remain valid
- during lifetime of DWFL. Function returns true on success,
- false otherwise. */
-bool dwfl_attach_state (Dwfl *dwfl, int machine, pid_t pid,
+ modules is specified by ELF, ELF must remain valid during DWFL lifetime.
+ Use NULL ELF to detect architecture from DWFL, the function will then detect
+ it from arbitrary Dwfl_Module of DWFL. DWFL_ARG is the callback backend
+ state. DWFL_ARG will be provided to the callbacks. *THREAD_CALLBACKS
+ function pointers must remain valid during lifetime of DWFL. Function
+ returns true on success, false otherwise. */
+bool dwfl_attach_state (Dwfl *dwfl, Elf *elf, pid_t pid,
const Dwfl_Thread_Callbacks *thread_callbacks,
void *dwfl_arg)
__nonnull_attribute__ (1, 4);
diff --git a/libdwfl/linux-core-attach.c b/libdwfl/linux-core-attach.c
index 106d7649..971d495f 100644
--- a/libdwfl/linux-core-attach.c
+++ b/libdwfl/linux-core-attach.c
@@ -369,8 +369,8 @@ __libdwfl_attach_state_for_core (Dwfl *dwfl, Elf *core)
core_arg->note_data = note_data;
core_arg->thread_note_offset = 0;
core_arg->ebl = ebl;
- if (! INTUSE(dwfl_attach_state) (dwfl, ebl_get_elfmachine (ebl), pid,
- &core_thread_callbacks, core_arg))
+ if (! INTUSE(dwfl_attach_state) (dwfl, core, pid, &core_thread_callbacks,
+ core_arg))
{
free (core_arg);
ebl_closebackend (ebl);
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
index 5ad58f6b..b4f31654 100644
--- a/libdwfl/linux-pid-attach.c
+++ b/libdwfl/linux-pid-attach.c
@@ -271,7 +271,7 @@ __libdwfl_attach_state_for_pid (Dwfl *dwfl, pid_t pid)
}
pid_arg->dir = dir;
pid_arg->tid_attached = 0;
- if (! INTUSE(dwfl_attach_state) (dwfl, EM_NONE, pid, &pid_thread_callbacks,
+ if (! INTUSE(dwfl_attach_state) (dwfl, NULL, pid, &pid_thread_callbacks,
pid_arg))
{
closedir (dir);