This is the mail archive of the
gdb-testers@sourceware.org
mailing list for the GDB project.
[binutils-gdb] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
- From: sergiodj+buildbot at sergiodj dot net
- To: gdb-testers at sourceware dot org
- Date: Wed, 11 Oct 2017 12:30:15 -0400
- Subject: [binutils-gdb] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
- Authentication-results: sourceware.org; auth=none
*** TEST RESULTS FOR COMMIT 3c9a7b0d6d84425ea24d222a1a31e206e587374f ***
Author: Maciej W. Rozycki <macro@imgtec.com>
Branch: master
Commit: 3c9a7b0d6d84425ea24d222a1a31e206e587374f
ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
Fix commit 70a38d42c5b3 ("New entry points for writing Linux NT_PRPSINFO
notes."), <https://sourceware.org/ml/binutils/2013-02/msg00023.html>,
and handle both variants of the 64-bit Linux core PRPSINFO note across
all targets.
The 64-bit Linux core PRPSINFO note matches the 64-bit kernel structure,
defined as follows:
(gdb) ptype struct elf_prpsinfo
type = struct elf_prpsinfo {
char pr_state;
char pr_sname;
char pr_zomb;
char pr_nice;
unsigned long pr_flag;
__kernel_uid_t pr_uid;
__kernel_gid_t pr_gid;
pid_t pr_pid;
pid_t pr_ppid;
pid_t pr_pgrp;
pid_t pr_sid;
char pr_fname[16];
char pr_psargs[80];
}
(gdb)
where the individual data types of most members are the same across all
64-bit Linux ports, with the exception of `__kernel_uid_t' and
`__kernel_gid_t'. These are defined in <asm-generic/posix_types.h> as
32-bit `unsigned int' by default, however overridden as 16-bit `unsigned
short' in port-specific <asm/posix_types.h> for the SuperH target.
The default is already handled, as from the commit referred. Add the
other variant then and provide a backend flag to switch between the two
cases possible, with the 32-bit one being the default and the 16-bit one
explicitly selected. Set the flag in the SuperH target backend. This
arrangement is analogous to how the 32-bit Linux core PRPSINFO note is
handled.
bfd/
* elf-bfd.h (elf_backend_data): Add `linux_prpsinfo64_ugid16'
member.
* elf-linux-core.h (elf_external_linux_prpsinfo64): Rename to...
(elf_external_linux_prpsinfo64_ugid32): ... this.
(swap_linux_prpsinfo32_out): Rename to...
(swap_linux_prpsinfo32_ugid32_out): ... this.
(elf_external_linux_prpsinfo64_ugid16): New structure.
(swap_linux_prpsinfo64_ugid16_out): New function.
* elfxx-target.h [!elf_backend_linux_prpsinfo64_ugid16]
(elf_backend_linux_prpsinfo64_ugid16): Define.
(elfNN_bed): Initialize `linux_prpsinfo64_ugid16' member.
* elf.c (elfcore_write_linux_prpsinfo64): Handle both variants
of the 64-bit Linux core PRPSINFO note.
* elf64-sh64.c (elf_backend_linux_prpsinfo64_ugid16): Define.
- Follow-Ups:
- Failures on Fedora-s390x-m64, branch master
- Failures on Ubuntu-AArch64-m64, branch master
- Failures on Ubuntu-AArch32-m32, branch master
- Failures on Ubuntu-AArch32-native-extended-gdbserver-m32, branch master
- Failures on Fedora-x86_64-native-gdbserver-m32, branch master
- Failures on Ubuntu-AArch32-native-gdbserver-m32, branch master
- Failures on Fedora-x86_64-native-extended-gdbserver-m64, branch master
- Failures on Fedora-i686, branch master
- Failures on Fedora-ppc64be-native-gdbserver-m64, branch master
- Failures on Fedora-ppc64be-native-extended-gdbserver-m64, branch master
- Failures on Fedora-ppc64be-cc-with-index, branch master