diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-11-14 20:53:20 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-11-14 20:53:20 +0100 |
commit | ed78237ef7c31fb1d7dc80e2c2e07484e1216727 (patch) | |
tree | 77b47858d8af36f03c5b75c3c9d8c08905d4808b | |
parent | 954a7b0f64346339ef12fb9c04cd2912b72c749d (diff) | |
download | elfutils-ed78237ef7c31fb1d7dc80e2c2e07484e1216727.tar.gz |
Fix dwfl_attach_state machine->elf
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
-rw-r--r-- | libdwfl/ChangeLog | 12 | ||||
-rw-r--r-- | libdwfl/dwfl_frame.c | 6 | ||||
-rw-r--r-- | libdwfl/libdwfl.h | 14 | ||||
-rw-r--r-- | libdwfl/linux-core-attach.c | 4 | ||||
-rw-r--r-- | libdwfl/linux-pid-attach.c | 2 |
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); |