Use gdbarch_long_bit to determine layout of FreeBSD siginfo_t.
authorJohn Baldwin <jhb@FreeBSD.org>
Mon, 9 Oct 2017 16:54:42 +0000 (09:54 -0700)
committerJohn Baldwin <jhb@FreeBSD.org>
Mon, 9 Oct 2017 16:54:42 +0000 (09:54 -0700)
commita181c0bf7461c28cdb72a4074c6d7608119fb575
treed6dfd5920579797064ca2b27a0730b547885f2c3
parent6e66f7538112d2f5fb1af17dbde33ba37a7171be
Use gdbarch_long_bit to determine layout of FreeBSD siginfo_t.

FreeBSD architectures are either ILP32 or LP64 resulting in two
different layouts for siginfo_t.  Previously, the 'bits_per_word'
member of bfd_arch_info was used to determine the layout to use for a
given FreeBSD architecture.  However, mipsn32 architectures inherit
from a 64-bit mips architecture where bits_per_word is 64.  As a
result, $_siginfo was not properly extracted from FreeBSD/mipsn32 core
dumps.  Fix this by using gdbarch_long_bit instead of 'bits_per_word'
to determine if a FreeBSD architecture is ILP32 or LP64.

gdb/ChangeLog:

* fbsd-nat.c (fbsd_siginfo_size): Use gdbarch_long_bit.
(fbsd_convert_siginfo): Likewise.
* fbsd-tdep.c (fbsd_core_xfer_siginfo): Likewise.
gdb/ChangeLog
gdb/fbsd-nat.c
gdb/fbsd-tdep.c