You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1.0 KiB
31 lines
1.0 KiB
9 years ago
|
diff --git a/ltrace-elf.c b/ltrace-elf.c
|
||
|
index f439cb0..60f1941 100644
|
||
|
--- a/ltrace-elf.c
|
||
|
+++ b/ltrace-elf.c
|
||
|
@@ -423,7 +423,9 @@ ltelf_destroy(struct ltelf *lte)
|
||
9 years ago
|
debug(DEBUG_FUNCTION, "close_elf()");
|
||
|
elf_end(lte->elf);
|
||
|
close(lte->fd);
|
||
|
- VECT_DESTROY(<e->plt_relocs, GElf_Rela, NULL, NULL);
|
||
|
+ if (lte->plt_relocs.elt_size) {
|
||
|
+ VECT_DESTROY(<e->plt_relocs, GElf_Rela, NULL, NULL);
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
static void
|
||
9 years ago
|
@@ -1149,9 +1151,11 @@ read_module(struct library *lib, struct process *proc,
|
||
|
* determine whether ABI is supported. This is to get
|
||
|
* reasonable error messages when trying to run 64-bit binary
|
||
|
* with 32-bit ltrace. It is desirable to preserve this. */
|
||
|
- proc->e_machine = lte.ehdr.e_machine;
|
||
|
- proc->e_class = lte.ehdr.e_ident[EI_CLASS];
|
||
|
- get_arch_dep(proc);
|
||
|
+ if (proc->e_machine == 0) {
|
||
|
+ proc->e_machine = lte.ehdr.e_machine;
|
||
|
+ proc->e_class = lte.ehdr.e_ident[EI_CLASS];
|
||
|
+ get_arch_dep(proc);
|
||
|
+ }
|
||
|
|
||
|
/* Find out the base address. For PIE main binaries we look
|
||
|
* into auxv, otherwise we scan phdrs. */
|