[ltrace] Fix 32-bit builds
Petr Machata
pmachata at fedoraproject.org
Mon Apr 30 23:15:20 UTC 2012
commit 17b8f90393695816dff1d2181b8666589bc5de30
Author: Petr Machata <pmachata at redhat.com>
Date: Tue May 1 01:14:39 2012 +0200
Fix 32-bit builds
Fallout of libs patch, therefore rolled into it.
ltrace-0.6.0-libs.patch | 50 +++++++++++++++++++++++++++++++++++++++++++++++
ltrace.spec | 5 +++-
2 files changed, 54 insertions(+), 1 deletions(-)
---
diff --git a/ltrace-0.6.0-libs.patch b/ltrace-0.6.0-libs.patch
index 5d2557f..a433ee2 100644
--- a/ltrace-0.6.0-libs.patch
+++ b/ltrace-0.6.0-libs.patch
@@ -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;
+ }
+
diff --git a/ltrace.spec b/ltrace.spec
index 2f9bc85..ef83315 100644
--- a/ltrace.spec
+++ b/ltrace.spec
@@ -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 at redhat.com> - 0.6.0-12
+- Fix 32-bit builds
+
* Mon Apr 30 2012 Petr Machata <pmachata at redhat.com> - 0.6.0-11
- Fix detach from sleeping process
- Add limited support for return from tail call
More information about the scm-commits
mailing list