summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2008-09-14 16:52:42 +0000
committermarcel <marcel@FreeBSD.org>2008-09-14 16:52:42 +0000
commitcdbf12a91a9b3ee26919dc8cc87b7ce2ee7a6fb5 (patch)
tree1cbde5082b3d497ca06f3a07472572a62798fd11 /gnu
parentb934eafe5ec762456704ad6aa2df68ebb8f9d18c (diff)
downloadFreeBSD-src-cdbf12a91a9b3ee26919dc8cc87b7ce2ee7a6fb5.zip
FreeBSD-src-cdbf12a91a9b3ee26919dc8cc87b7ce2ee7a6fb5.tar.gz
Widen psaddr_t from uintptr_t to uint64_t. This results in an
ABI change on ILP32 platforms and relating to events. However it's harmless on little-endian ILP32 platforms in the sense that it doesn't cause breakages. Old ILP32 thread libraries write a 32-bit th_p and new thread libraries write a 64-bit th_p. But due to the fact that we have an unused 32-bit data field right after th_p and that field is always initialized to zero, little-endian ILP32 machines effectively have a valid 64-bit th_p by accident. Likewise for new thread libraries and old libthread_db: little endian ILP32 is unaffected. At this time we don't support big-endian threaded applications in GDB, so the breakage for the ILP32 case goes unnoticed.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/usr.bin/gdb/libgdb/fbsd-threads.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/gnu/usr.bin/gdb/libgdb/fbsd-threads.c b/gnu/usr.bin/gdb/libgdb/fbsd-threads.c
index 730d0f6..eb83f2e 100644
--- a/gnu/usr.bin/gdb/libgdb/fbsd-threads.c
+++ b/gnu/usr.bin/gdb/libgdb/fbsd-threads.c
@@ -710,7 +710,7 @@ check_event (ptid_t ptid)
error ("Cannot get thread event message: %s",
thread_db_err_str (err));
}
- err = td_thr_get_info_p (msg.th_p, &ti);
+ err = td_thr_get_info_p ((void *)(uintptr_t)msg.th_p, &ti);
if (err != TD_OK)
error ("Cannot get thread info: %s", thread_db_err_str (err));
ptid = BUILD_THREAD (ti.ti_tid, GET_PID (ptid));
@@ -720,7 +720,7 @@ check_event (ptid_t ptid)
/* We may already know about this thread, for instance when the
user has issued the `info threads' command before the SIGTRAP
for hitting the thread creation breakpoint was reported. */
- attach_thread (ptid, msg.th_p, &ti, 1);
+ attach_thread (ptid, (void *)(uintptr_t)msg.th_p, &ti, 1);
break;
case TD_DEATH:
if (!in_thread_list (ptid))
@@ -1178,13 +1178,14 @@ fbsd_thread_pid_to_str (ptid_t ptid)
if (ti.ti_lid != 0)
{
- snprintf (buf, sizeof (buf), "Thread %p (LWP %d)",
- th.th_thread, ti.ti_lid);
+ snprintf (buf, sizeof (buf), "Thread %llx (LWP %d)",
+ (unsigned long long)th.th_thread, ti.ti_lid);
}
else
{
- snprintf (buf, sizeof (buf), "Thread %p (%s)",
- th.th_thread, thread_db_state_str (ti.ti_state));
+ snprintf (buf, sizeof (buf), "Thread %llx (%s)",
+ (unsigned long long)th.th_thread,
+ thread_db_state_str (ti.ti_state));
}
return buf;
OpenPOWER on IntegriCloud