Fix 32-bit builds

Fallout of libs patch, therefore rolled into it.
This commit is contained in:
Petr Machata 2012-05-01 01:14:39 +02:00
parent ee71d18ef6
commit 17b8f90393
2 changed files with 54 additions and 1 deletions

View File

@ -10188,3 +10188,53 @@ diff -urp ltrace-0.6.0-orig/sysdeps/linux-gnu/Makefile.in ltrace-0.6.0/sysdeps/l
EXTRA_DIST = \
arch_mksyscallent \
diff --git a/ltrace-elf.c b/ltrace-elf.c
index a311c5f..b1af070 100644
--- a/ltrace-elf.c
+++ b/ltrace-elf.c
@@ -175,8 +175,8 @@ need_data(Elf_Data *data, GElf_Xword offset, GElf_Xword size)
{
assert(data != NULL);
if (data->d_size < size || offset > data->d_size - size) {
- debug(1, "Not enough data to read %zd-byte value"
- " at offset %zd.", size, offset);
+ debug(1, "Not enough data to read %"PRId64"-byte value"
+ " at offset %"PRId64".", size, offset);
return -1;
}
return 0;
diff --git a/sysdeps/linux-gnu/ppc/plt.c b/sysdeps/linux-gnu/ppc/plt.c
index 3b6a25f..9717738 100644
--- a/sysdeps/linux-gnu/ppc/plt.c
+++ b/sysdeps/linux-gnu/ppc/plt.c
@@ -230,7 +230,9 @@ arch_translate_address_dyn(struct Process *proc,
error(0, errno, "dynamic .opd translation of %p", addr);
return -1;
}
- *ret = (target_address_t)value;
+ /* XXX The double cast should be removed when
+ * target_address_t becomes integral type. */
+ *ret = (target_address_t)(uintptr_t)value;
return 0;
}
@@ -243,14 +245,17 @@ arch_translate_address(struct ltelf *lte,
target_address_t addr, target_address_t *ret)
{
if (lte->ehdr.e_machine == EM_PPC64) {
- GElf_Xword offset = (GElf_Addr)addr - lte->arch.opd_base;
+ /* XXX The double cast should be removed when
+ * target_address_t becomes integral type. */
+ GElf_Xword offset
+ = (GElf_Addr)(uintptr_t)addr - lte->arch.opd_base;
uint64_t value;
if (elf_read_u64(lte->arch.opd_data, offset, &value) < 0) {
error(0, 0, "static .opd translation of %p: %s", addr,
elf_errmsg(-1));
return -1;
}
- *ret = (target_address_t)(value + lte->bias);
+ *ret = (target_address_t)(uintptr_t)(value + lte->bias);
return 0;
}

View File

@ -1,7 +1,7 @@
Summary: Tracks runtime library calls from dynamically linked executables
Name: ltrace
Version: 0.6.0
Release: 11%{?dist}
Release: 12%{?dist}
URL: http://ltrace.alioth.debian.org/
License: GPLv2+
Group: Development/Debuggers
@ -88,6 +88,9 @@ echo ====================TESTING END=====================
%config(noreplace) %{_sysconfdir}/ltrace.conf
%changelog
* Mon Apr 30 2012 Petr Machata <pmachata@redhat.com> - 0.6.0-12
- Fix 32-bit builds
* Mon Apr 30 2012 Petr Machata <pmachata@redhat.com> - 0.6.0-11
- Fix detach from sleeping process
- Add limited support for return from tail call