This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] [patch 1/4] Fix dwfl_attach_state machine->elf


On Thu, 14 Nov 2013 16:16:26 +0100, Mark Wielaard wrote:
> Yes, this makes sense to me. The elf is more "natural" to pass around
> than the more abstract e_machine. Looks good.

Checked in.


Thanks,
Jan


Fix dwfl_attach_state machine->elf

Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
---
 libdwfl/ChangeLog           | 12 ++++++++++++
 libdwfl/dwfl_frame.c        |  6 +++---
 libdwfl/libdwfl.h           | 14 +++++++-------
 libdwfl/linux-core-attach.c |  4 ++--
 libdwfl/linux-pid-attach.c  |  2 +-
 5 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 95e3cd7..561017b 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 11376c6..f286350 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 bbabb70..303f79c 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 106d764..971d495 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 5ad58f6..b4f3165 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);
-- 
1.8.3.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]