Track elf class in struct Process
Technically only s390 needs this at the moment, but it seems general enough
that it should be alongside the e_machine flag. Eventually it is desirable
to replace both fields with either a backend-provided ABI enum, or with
an ABI object that would implement the interesting back end calls.
diff --git a/ltrace-elf.c b/ltrace-elf.c
index 76ba3ae..c8667a7 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -736,6 +736,7 @@
}
proc->e_machine = lte.ehdr.e_machine;
+ proc->e_class = lte.ehdr.e_ident[EI_CLASS];
int status = 0;
if (lib == NULL)
diff --git a/proc.c b/proc.c
index b280df8..bf26180 100644
--- a/proc.c
+++ b/proc.c
@@ -270,6 +270,7 @@
retp->tracesysgood = proc->tracesysgood;
retp->e_machine = proc->e_machine;
+ retp->e_class = proc->e_class;
/* For non-leader processes, that's all we need to do. */
if (retp->leader != retp)
diff --git a/proc.h b/proc.h
index 03ef044..64c37a9 100644
--- a/proc.h
+++ b/proc.h
@@ -121,7 +121,15 @@
void * stack_pointer; /* To get return addr, args... */
void * return_addr;
void * arch_ptr;
+
+ /* XXX We would like to replace this with a pointer to ABI
+ * object that would provide the relevant services, instead of
+ * checking the necessary flags in the back end ad
+ * nauseam. */
short e_machine;
+ char e_class;
+
+ /* XXX this shoudl go to ARM's arch_process_data. */
#ifdef __arm__
int thumb_mode; /* ARM execution mode: 0: ARM, 1: Thumb */
#endif