unwind: fix build on 32-bit architectures
Fix compilation warnings in unwind.c on 32-bit architectures.
On some architectures getuid is actually getuid32, so change the test
to use getpid instead of getuid.
* unwind.c (STACK_ENTRY_SYMBOL_FMT): Explicitly cast function_off_set
to unsigned long.
(queue_put_error): Change the 3rd argument's type to unsigned long.
* tests/stack-fcall.c (f1): Use getpid instead of getuid.
* tests/strace-k.test: Likewise.
diff --git a/tests/stack-fcall.c b/tests/stack-fcall.c
index 04339b1..1c66fef 100644
--- a/tests/stack-fcall.c
+++ b/tests/stack-fcall.c
@@ -5,7 +5,7 @@
int f1(int i)
{
- static uid_t (* volatile g)(void) = getuid;
+ static pid_t (* volatile g)(void) = getpid;
return g() + i;
}
diff --git a/tests/strace-k.test b/tests/strace-k.test
index 329f302..3845c8c 100755
--- a/tests/strace-k.test
+++ b/tests/strace-k.test
@@ -17,13 +17,13 @@
$STRACE -h | grep '^-k' > /dev/null ||
skip_ 'strace -k is not available'
-args="-e getuid -k ./stack-fcall"
+args="-e getpid -k ./stack-fcall"
$STRACE $args > $LOG 2>&1 || {
cat $LOG
fail_ "$STRACE $args failed"
}
-expected='getuid f1 f0 main '
+expected='getpid f1 f0 main '
result=$(sed -n '1,/(main+0x[a-f0-9]\+) .*/ s/^.*(\([^+]\+\)+0x[a-f0-9]\+) .*/\1/p' $LOG |
tr '\n' ' ')
diff --git a/unwind.c b/unwind.c
index 797a287..21f2a48 100644
--- a/unwind.c
+++ b/unwind.c
@@ -403,7 +403,7 @@
" > %s(%s+0x%lx) [0x%lx]\n", \
binary_filename, \
symbol_name, \
- function_off_set, \
+ (unsigned long) function_off_set, \
true_offset
#define STACK_ENTRY_NOSYMBOL_FMT \
" > %s() [0x%lx]\n", \
@@ -523,7 +523,7 @@
static void
queue_put_error(void *queue,
const char *error,
- unw_word_t ip)
+ unsigned long ip)
{
queue_put(queue, NULL, NULL, 0, ip, error);
}