* [PATCH 1/4] ELF/BFD: Fix padding in `elf_external_linux_prpsinfo64'
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
@ 2017-09-23 0:03 ` Maciej W. Rozycki
2017-09-23 0:04 ` [PATCH 2/4] ELF/BFD,GDB: Handle both variants of the 32-bit Linux core PRPSINFO note Maciej W. Rozycki
` (5 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-23 0:03 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
Fix commit 70a38d42c5b3 ("New entry points for writing Linux NT_PRPSINFO
notes."), <https://sourceware.org/ml/binutils/2013-02/msg00023.html>,
and move the padding of the `elf_external_linux_prpsinfo64' structure to
match the corresponding 64-bit Linux kernel `elf_prpsinfo' structure.
The 64-bit kernel structure is 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) print /x &((struct elf_prpsinfo *)0)->pr_nice
$1 = 0x3
(gdb) print /x &((struct elf_prpsinfo *)0)->pr_flag
$2 = 0x8
(gdb) print /x &((struct elf_prpsinfo *)0)->pr_uid
$3 = 0x10
(gdb) print sizeof(((struct elf_prpsinfo *)0)->pr_flag)
$4 = 8
(gdb)
with implicit padding present before the `pr_flag' member, to correctly
align it to a multiple of 8. Conversely `elf_external_linux_prpsinfo64'
has padding after its `pr_flag' member:
(top-gdb) ptype struct elf_external_linux_prpsinfo64
type = struct elf_external_linux_prpsinfo64 {
char pr_state;
char pr_sname;
char pr_zomb;
char pr_nice;
char pr_flag[8];
char gap[4];
char pr_uid[4];
char pr_gid[4];
char pr_pid[4];
char pr_ppid[4];
char pr_pgrp[4];
char pr_sid[4];
char pr_fname[16];
char pr_psargs[80];
}
(top-gdb) print /x &((struct elf_external_linux_prpsinfo64 *)0)->pr_nice
$1 = 0x3
(top-gdb) print /x &((struct elf_external_linux_prpsinfo64 *)0)->pr_flag
$2 = 0x4
(top-gdb) print /x &((struct elf_external_linux_prpsinfo64 *)0)->pr_uid
$3 = 0x10
(top-gdb)
and consequently `pr_flag' is misplaced. Move `gap' ahead of `pr_flag'
then.
bfd/
* elf-linux-core.h (elf_external_linux_prpsinfo64): Move the
`gap' member ahead of `pr_flag'.
---
bfd/elf-linux-core.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: binutils/bfd/elf-linux-core.h
===================================================================
--- binutils.orig/bfd/elf-linux-core.h 2017-07-31 09:18:48.000000000 +0100
+++ binutils/bfd/elf-linux-core.h 2017-09-19 15:49:09.859093825 +0100
@@ -85,8 +85,8 @@ struct elf_external_linux_prpsinfo64
char pr_sname; /* Char for pr_state. */
char pr_zomb; /* Zombie. */
char pr_nice; /* Nice val. */
- char pr_flag[8]; /* Flags. */
char gap[4];
+ char pr_flag[8]; /* Flags. */
char pr_uid[4];
char pr_gid[4];
char pr_pid[4];
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 2/4] ELF/BFD,GDB: Handle both variants of the 32-bit Linux core PRPSINFO note
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
2017-09-23 0:03 ` [PATCH 1/4] ELF/BFD: Fix padding in `elf_external_linux_prpsinfo64' Maciej W. Rozycki
@ 2017-09-23 0:04 ` Maciej W. Rozycki
2017-09-23 0:04 ` [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit " Maciej W. Rozycki
` (4 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-23 0:04 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
Fix commit 70a38d42c5b3 ("New entry points for writing Linux NT_PRPSINFO
notes."), <https://sourceware.org/ml/binutils/2013-02/msg00023.html>,
and commit b3ac9c77560a ("Put more info in NT_PRPSINFO Linux notes"),
<https://sourceware.org/ml/binutils/2013-02/msg00024.html>, and handle
both variants of the 32-bit Linux core PRPSINFO note across all targets.
The 32-bit Linux core PRPSINFO note matches the 32-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
32-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 a few targets, mostly
earlier ports of Linux, specifically: ARM, CRIS, FR-V, M32R, m68k,
MN10300/AM33, s390, SuperH, SPARC and i386.
The default is the same as the PowerPC variant already handled, as from
the commits referred. Make the special PowerPC case generic then,
removing the GDB part, 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 target backends affected.
bfd/
* elf-bfd.h (elf_backend_data): Add `linux_prpsinfo32_ugid16'
member.
(elfcore_write_ppc_linux_prpsinfo32): Remove prototype.
* elf32-ppc.c (elfcore_write_ppc_linux_prpsinfo32): Remove.
(elf_external_ppc_linux_prpsinfo32)
(swap_ppc_linux_prpsinfo32_out): Move to...
* elf-linux-core.h (elf_external_linux_prpsinfo32_ugid32)
(swap_linux_prpsinfo32_ugid32_out): ... these.
(elf_external_linux_prpsinfo32): Rename to...
(elf_external_linux_prpsinfo32_ugid16): ... this.
(swap_linux_prpsinfo32_out): Rename to...
(swap_linux_prpsinfo32_ugid16_out): ... this.
* elfxx-target.h [!elf_backend_linux_prpsinfo32_ugid16]
(elf_backend_linux_prpsinfo32_ugid16): Define.
(elfNN_bed): Initialize `linux_prpsinfo32_ugid16' member.
* elf.c (elfcore_write_linux_prpsinfo32): Handle both variants
of the 32-bit Linux core PRPSINFO note.
* elf32-am33lin.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-arm.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-cris.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-frv.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-i386.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-m32r.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-m68k.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-s390.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-sh.c (elf_backend_linux_prpsinfo32_ugid16): Define.
* elf32-sparc.c (elf_backend_linux_prpsinfo32_ugid16): Define.
gdb/
* ppc-linux-tdep.c (ppc_linux_init_abi): Remove call to
`set_gdbarch_elfcore_write_linux_prpsinfo'.
---
bfd/elf-bfd.h | 8 ++---
bfd/elf-linux-core.h | 69 +++++++++++++++++++++++++++++++++++++++++++++------
bfd/elf.c | 19 +++++++++++---
bfd/elf32-am33lin.c | 2 +
bfd/elf32-arm.c | 2 +
bfd/elf32-cris.c | 2 +
bfd/elf32-frv.c | 2 +
bfd/elf32-i386.c | 2 +
bfd/elf32-m32r.c | 2 +
bfd/elf32-m68k.c | 2 +
bfd/elf32-ppc.c | 64 -----------------------------------------------
bfd/elf32-s390.c | 2 +
bfd/elf32-sh.c | 2 +
bfd/elf32-sparc.c | 2 +
bfd/elfxx-target.h | 6 +++-
gdb/ppc-linux-tdep.c | 8 -----
16 files changed, 106 insertions(+), 88 deletions(-)
gdb-elf-linux-core-prpsinfo32-ugid.diff
Index: binutils/bfd/elf-bfd.h
===================================================================
--- binutils.orig/bfd/elf-bfd.h 2017-09-20 08:57:46.329829140 +0100
+++ binutils/bfd/elf-bfd.h 2017-09-20 13:21:44.632864903 +0100
@@ -1552,6 +1552,10 @@ struct elf_backend_data
/* True if `_bfd_elf_link_renumber_dynsyms' must be called even for
static binaries. */
unsigned always_renumber_dynsyms : 1;
+
+ /* True if the 32-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
+ members use a 16-bit data type. */
+ unsigned linux_prpsinfo32_ugid16 : 1;
};
/* Information about reloc sections associated with a bfd_elf_section_data
@@ -2590,10 +2594,6 @@ extern char *elfcore_write_linux_prpsinf
extern char *elfcore_write_linux_prpsinfo64
(bfd *, char *, int *, const struct elf_internal_linux_prpsinfo *);
-/* Linux/PPC32 uses different layout compared to most archs. */
-extern char *elfcore_write_ppc_linux_prpsinfo32
- (bfd *, char *, int *, const struct elf_internal_linux_prpsinfo *);
-
extern bfd *_bfd_elf32_bfd_from_remote_memory
(bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type));
Index: binutils/bfd/elf-linux-core.h
===================================================================
--- binutils.orig/bfd/elf-linux-core.h 2017-09-20 13:03:16.072015869 +0100
+++ binutils/bfd/elf-linux-core.h 2017-09-20 13:21:44.637038624 +0100
@@ -21,18 +21,70 @@
#ifndef ELF_LINUX_CORE_H
#define ELF_LINUX_CORE_H
-/* The PRPSINFO structures defined below are used by most
- architectures, although some of them define their own versions
- (like e.g., PPC). */
+/* External 32-bit structure for PRPSINFO. This structure is
+ ABI-defined, thus we choose to use char arrays here in order to
+ avoid dealing with different types in different architectures.
+
+ This is the variant for targets which use a 32-bit data type for
+ UID and GID, as all modern Linux ports do. Some older ports use
+ a 16-bit data type instead; see below for the alternative variant.
+
+ This structure will ultimately be written in the corefile's note
+ section, as the PRPSINFO. */
+
+struct elf_external_linux_prpsinfo32_ugid32
+ {
+ char pr_state; /* Numeric process state. */
+ char pr_sname; /* Char for pr_state. */
+ char pr_zomb; /* Zombie. */
+ char pr_nice; /* Nice val. */
+ char pr_flag[4]; /* Flags. */
+ char pr_uid[4];
+ char pr_gid[4];
+ char pr_pid[4];
+ char pr_ppid[4];
+ char pr_pgrp[4];
+ char pr_sid[4];
+ char pr_fname[16]; /* Filename of executable. */
+ char pr_psargs[80]; /* Initial part of arg list. */
+ };
+
+/* Helper function to copy an elf_internal_linux_prpsinfo in host
+ endian to an elf_external_linux_prpsinfo32_ugid32 in target endian. */
+
+static inline void
+swap_linux_prpsinfo32_ugid32_out
+ (bfd *obfd,
+ const struct elf_internal_linux_prpsinfo *from,
+ struct elf_external_linux_prpsinfo32_ugid32 *to)
+{
+ bfd_put_8 (obfd, from->pr_state, &to->pr_state);
+ bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
+ bfd_put_8 (obfd, from->pr_zomb, &to->pr_zomb);
+ bfd_put_8 (obfd, from->pr_nice, &to->pr_nice);
+ bfd_put_32 (obfd, from->pr_flag, to->pr_flag);
+ bfd_put_32 (obfd, from->pr_uid, to->pr_uid);
+ bfd_put_32 (obfd, from->pr_gid, to->pr_gid);
+ bfd_put_32 (obfd, from->pr_pid, to->pr_pid);
+ bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
+ bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
+ bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+ strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+ strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
+}
/* External 32-bit structure for PRPSINFO. This structure is
ABI-defined, thus we choose to use char arrays here in order to
avoid dealing with different types in different architectures.
+ This is the variant for targets which use a 16-bit data type for
+ UID and GID, as some older Linux ports do. All modern ports use
+ a 32-bit data type instead; see above for the alternative variant.
+
This structure will ultimately be written in the corefile's note
section, as the PRPSINFO. */
-struct elf_external_linux_prpsinfo32
+struct elf_external_linux_prpsinfo32_ugid16
{
char pr_state; /* Numeric process state. */
char pr_sname; /* Char for pr_state. */
@@ -50,12 +102,13 @@ struct elf_external_linux_prpsinfo32
};
/* Helper function to copy an elf_internal_linux_prpsinfo in host
- endian to an elf_external_linux_prpsinfo32 in target endian. */
+ endian to an elf_external_linux_prpsinfo32_ugid16 in target endian. */
static inline void
-swap_linux_prpsinfo32_out (bfd *obfd,
- const struct elf_internal_linux_prpsinfo *from,
- struct elf_external_linux_prpsinfo32 *to)
+swap_linux_prpsinfo32_ugid16_out
+ (bfd *obfd,
+ const struct elf_internal_linux_prpsinfo *from,
+ struct elf_external_linux_prpsinfo32_ugid16 *to)
{
bfd_put_8 (obfd, from->pr_state, &to->pr_state);
bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
Index: binutils/bfd/elf.c
===================================================================
--- binutils.orig/bfd/elf.c 2017-09-20 08:57:46.410533380 +0100
+++ binutils/bfd/elf.c 2017-09-20 13:21:44.649303216 +0100
@@ -10447,11 +10447,22 @@ elfcore_write_linux_prpsinfo32
(bfd *abfd, char *buf, int *bufsiz,
const struct elf_internal_linux_prpsinfo *prpsinfo)
{
- struct elf_external_linux_prpsinfo32 data;
+ if (get_elf_backend_data (abfd)->linux_prpsinfo32_ugid16)
+ {
+ struct elf_external_linux_prpsinfo32_ugid16 data;
- swap_linux_prpsinfo32_out (abfd, prpsinfo, &data);
- return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO,
- &data, sizeof (data));
+ swap_linux_prpsinfo32_ugid16_out (abfd, prpsinfo, &data);
+ return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO,
+ &data, sizeof (data));
+ }
+ else
+ {
+ struct elf_external_linux_prpsinfo32_ugid32 data;
+
+ swap_linux_prpsinfo32_ugid32_out (abfd, prpsinfo, &data);
+ return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO,
+ &data, sizeof (data));
+ }
}
char *
Index: binutils/bfd/elf32-am33lin.c
===================================================================
--- binutils.orig/bfd/elf32-am33lin.c 2017-09-20 08:57:46.444805132 +0100
+++ binutils/bfd/elf32-am33lin.c 2017-09-20 13:03:18.247682527 +0100
@@ -102,4 +102,6 @@ elf32_am33lin_grok_psinfo (bfd *abfd, El
#define elf_backend_grok_prstatus elf32_am33lin_grok_prstatus
#define elf_backend_grok_psinfo elf32_am33lin_grok_psinfo
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf-m10300.c"
Index: binutils/bfd/elf32-arm.c
===================================================================
--- binutils.orig/bfd/elf32-arm.c 2017-09-20 08:57:46.479234824 +0100
+++ binutils/bfd/elf32-arm.c 2017-09-20 13:03:18.308785922 +0100
@@ -19452,6 +19452,8 @@ elf32_arm_backend_symbol_processing (bfd
#undef elf_backend_lookup_section_flags_hook
#define elf_backend_lookup_section_flags_hook elf32_arm_lookup_section_flags
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
/* Native Client targets. */
Index: binutils/bfd/elf32-cris.c
===================================================================
--- binutils.orig/bfd/elf32-cris.c 2017-09-20 08:57:46.486380760 +0100
+++ binutils/bfd/elf32-cris.c 2017-09-20 13:03:18.332132218 +0100
@@ -4347,6 +4347,8 @@ elf_cris_got_elt_size (bfd *abfd ATTRIBU
#define elf_backend_may_use_rela_p 1
#define elf_backend_rela_normal 1
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
#undef TARGET_LITTLE_SYM
Index: binutils/bfd/elf32-frv.c
===================================================================
--- binutils.orig/bfd/elf32-frv.c 2017-09-20 08:57:46.506881510 +0100
+++ binutils/bfd/elf32-frv.c 2017-09-20 13:03:18.368383137 +0100
@@ -6810,6 +6810,8 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_In
#define elf_backend_grok_prstatus elf32_frv_grok_prstatus
#define elf_backend_grok_psinfo elf32_frv_grok_psinfo
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
#undef ELF_MAXPAGESIZE
Index: binutils/bfd/elf32-i386.c
===================================================================
--- binutils.orig/bfd/elf32-i386.c 2017-09-20 08:57:46.533140544 +0100
+++ binutils/bfd/elf32-i386.c 2017-09-20 13:03:18.381640588 +0100
@@ -4688,6 +4688,8 @@ elf_i386_link_setup_gnu_properties (stru
#define elf_backend_relocate_section elf_i386_relocate_section
#define elf_backend_setup_gnu_properties elf_i386_link_setup_gnu_properties
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
/* FreeBSD support. */
Index: binutils/bfd/elf32-m32r.c
===================================================================
--- binutils.orig/bfd/elf32-m32r.c 2017-09-20 08:57:46.567479590 +0100
+++ binutils/bfd/elf32-m32r.c 2017-09-20 13:03:18.414173194 +0100
@@ -4015,6 +4015,8 @@ m32r_elf_reloc_type_class (const struct
#define bfd_elf32_bfd_print_private_bfd_data m32r_elf_print_private_bfd_data
#define elf_backend_special_sections m32r_elf_special_sections
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
#undef ELF_MAXPAGESIZE
Index: binutils/bfd/elf32-m68k.c
===================================================================
--- binutils.orig/bfd/elf32-m68k.c 2017-09-20 08:57:46.603988462 +0100
+++ binutils/bfd/elf32-m68k.c 2017-09-20 13:03:18.461612987 +0100
@@ -4841,4 +4841,6 @@ elf_m68k_add_symbol_hook (bfd *abfd,
#define elf_backend_rela_normal 1
#define elf_backend_dtrel_excludes_plt 1
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
Index: binutils/bfd/elf32-ppc.c
===================================================================
--- binutils.orig/bfd/elf32-ppc.c 2017-09-20 08:57:46.632181726 +0100
+++ binutils/bfd/elf32-ppc.c 2017-09-20 13:03:18.545532544 +0100
@@ -1821,56 +1821,6 @@ static reloc_howto_type ppc_elf_howto_ra
0xffff, /* dst_mask */
FALSE), /* pcrel_offset */
};
-
-/* External 32-bit PPC structure for PRPSINFO. This structure is
- ABI-defined, thus we choose to use char arrays here in order to
- avoid dealing with different types in different architectures.
-
- The PPC 32-bit structure uses int for `pr_uid' and `pr_gid' while
- most non-PPC architectures use `short int'.
-
- This structure will ultimately be written in the corefile's note
- section, as the PRPSINFO. */
-
-struct elf_external_ppc_linux_prpsinfo32
- {
- char pr_state; /* Numeric process state. */
- char pr_sname; /* Char for pr_state. */
- char pr_zomb; /* Zombie. */
- char pr_nice; /* Nice val. */
- char pr_flag[4]; /* Flags. */
- char pr_uid[4];
- char pr_gid[4];
- char pr_pid[4];
- char pr_ppid[4];
- char pr_pgrp[4];
- char pr_sid[4];
- char pr_fname[16]; /* Filename of executable. */
- char pr_psargs[80]; /* Initial part of arg list. */
- };
-
-/* Helper function to copy an elf_internal_linux_prpsinfo in host
- endian to an elf_external_ppc_linux_prpsinfo32 in target endian. */
-
-static inline void
-swap_ppc_linux_prpsinfo32_out (bfd *obfd,
- const struct elf_internal_linux_prpsinfo *from,
- struct elf_external_ppc_linux_prpsinfo32 *to)
-{
- bfd_put_8 (obfd, from->pr_state, &to->pr_state);
- bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
- bfd_put_8 (obfd, from->pr_zomb, &to->pr_zomb);
- bfd_put_8 (obfd, from->pr_nice, &to->pr_nice);
- bfd_put_32 (obfd, from->pr_flag, to->pr_flag);
- bfd_put_32 (obfd, from->pr_uid, to->pr_uid);
- bfd_put_32 (obfd, from->pr_gid, to->pr_gid);
- bfd_put_32 (obfd, from->pr_pid, to->pr_pid);
- bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
- bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
- bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
- strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
- strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
-}
\f
/* Initialize the ppc_elf_howto_table, so that linear accesses can be done. */
@@ -2408,20 +2358,6 @@ ppc_elf_grok_psinfo (bfd *abfd, Elf_Inte
return TRUE;
}
-char *
-elfcore_write_ppc_linux_prpsinfo32
- (bfd *abfd,
- char *buf,
- int *bufsiz,
- const struct elf_internal_linux_prpsinfo *prpsinfo)
-{
- struct elf_external_ppc_linux_prpsinfo32 data;
-
- swap_ppc_linux_prpsinfo32_out (abfd, prpsinfo, &data);
- return elfcore_write_note (abfd, buf, bufsiz,
- "CORE", NT_PRPSINFO, &data, sizeof (data));
-}
-
static char *
ppc_elf_write_core_note (bfd *abfd, char *buf, int *bufsiz, int note_type, ...)
{
Index: binutils/bfd/elf32-s390.c
===================================================================
--- binutils.orig/bfd/elf32-s390.c 2017-09-20 08:57:46.652426839 +0100
+++ binutils/bfd/elf32-s390.c 2017-09-20 13:03:18.578921774 +0100
@@ -4219,4 +4219,6 @@ elf32_s390_merge_private_bfd_data (bfd *
#define bfd_elf32_mkobject elf_s390_mkobject
#define elf_backend_object_p elf_s390_object_p
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
Index: binutils/bfd/elf32-sh.c
===================================================================
--- binutils.orig/bfd/elf32-sh.c 2017-08-02 13:13:26.000000000 +0100
+++ binutils/bfd/elf32-sh.c 2017-09-20 13:25:34.410225837 +0100
@@ -7301,6 +7301,8 @@ sh_elf_encode_eh_address (bfd *abfd,
#define elf_backend_got_header_size 12
#define elf_backend_dtrel_excludes_plt 1
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED
#include "elf32-target.h"
Index: binutils/bfd/elf32-sparc.c
===================================================================
--- binutils.orig/bfd/elf32-sparc.c 2017-09-20 08:57:46.677701718 +0100
+++ binutils/bfd/elf32-sparc.c 2017-09-20 13:03:18.589990618 +0100
@@ -252,6 +252,8 @@ elf32_sparc_add_symbol_hook (bfd * abfd,
#define elf_backend_add_symbol_hook elf32_sparc_add_symbol_hook
+#define elf_backend_linux_prpsinfo32_ugid16 TRUE
+
#include "elf32-target.h"
/* Solaris 2. */
Index: binutils/bfd/elfxx-target.h
===================================================================
--- binutils.orig/bfd/elfxx-target.h 2017-09-20 08:57:46.692822810 +0100
+++ binutils/bfd/elfxx-target.h 2017-09-20 13:21:44.669562976 +0100
@@ -132,6 +132,9 @@
#ifndef elf_backend_always_renumber_dynsyms
#define elf_backend_always_renumber_dynsyms FALSE
#endif
+#ifndef elf_backend_linux_prpsinfo32_ugid16
+#define elf_backend_linux_prpsinfo32_ugid16 FALSE
+#endif
#ifndef elf_backend_stack_align
#define elf_backend_stack_align 16
#endif
@@ -891,7 +894,8 @@ static struct elf_backend_data elfNN_bed
elf_backend_default_execstack,
elf_backend_caches_rawsize,
elf_backend_extern_protected_data,
- elf_backend_always_renumber_dynsyms
+ elf_backend_always_renumber_dynsyms,
+ elf_backend_linux_prpsinfo32_ugid16
};
/* Forward declaration for use when initialising alternative_target field. */
Index: binutils/gdb/ppc-linux-tdep.c
===================================================================
--- binutils.orig/gdb/ppc-linux-tdep.c 2017-09-20 08:57:46.719058698 +0100
+++ binutils/gdb/ppc-linux-tdep.c 2017-09-20 13:03:18.656471651 +0100
@@ -60,7 +60,7 @@
#include "parser-defs.h"
#include "user-regs.h"
#include <ctype.h>
-#include "elf-bfd.h" /* for elfcore_write_* */
+#include "elf-bfd.h"
#include "features/rs6000/powerpc-32l.c"
#include "features/rs6000/powerpc-altivec32l.c"
@@ -1773,12 +1773,6 @@ ppc_linux_init_abi (struct gdbarch_info
set_gdbarch_gcore_bfd_target (gdbarch, "elf64-powerpc");
}
- /* PPC32 uses a different prpsinfo32 compared to most other Linux
- archs. */
- if (tdep->wordsize == 4)
- set_gdbarch_elfcore_write_linux_prpsinfo (gdbarch,
- elfcore_write_ppc_linux_prpsinfo32);
-
set_gdbarch_core_read_description (gdbarch, ppc_linux_core_read_description);
set_gdbarch_iterate_over_regset_sections (gdbarch,
ppc_linux_iterate_over_regset_sections);
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
2017-09-23 0:03 ` [PATCH 1/4] ELF/BFD: Fix padding in `elf_external_linux_prpsinfo64' Maciej W. Rozycki
2017-09-23 0:04 ` [PATCH 2/4] ELF/BFD,GDB: Handle both variants of the 32-bit Linux core PRPSINFO note Maciej W. Rozycki
@ 2017-09-23 0:04 ` Maciej W. Rozycki
2017-09-23 2:05 ` Sergio Durigan Junior
2017-09-23 0:05 ` [PATCH 4/4] GDB: Remove Linux core PRPSINFO note writer override Maciej W. Rozycki
` (3 subsequent siblings)
6 siblings, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-23 0:04 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
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.
---
bfd/elf-bfd.h | 4 +++
bfd/elf-linux-core.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++----
bfd/elf.c | 21 ++++++++++++---
bfd/elf64-sh64.c | 2 +
bfd/elfxx-target.h | 6 +++-
5 files changed, 90 insertions(+), 11 deletions(-)
gdb-elf-linux-core-prpsinfo64-ugid.diff
Index: binutils/bfd/elf-bfd.h
===================================================================
--- binutils.orig/bfd/elf-bfd.h 2017-09-20 13:03:18.000000000 +0100
+++ binutils/bfd/elf-bfd.h 2017-09-20 13:06:49.534308157 +0100
@@ -1556,6 +1556,10 @@ struct elf_backend_data
/* True if the 32-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
members use a 16-bit data type. */
unsigned linux_prpsinfo32_ugid16 : 1;
+
+ /* True if the 64-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
+ members use a 16-bit data type. */
+ unsigned linux_prpsinfo64_ugid16 : 1;
};
/* Information about reloc sections associated with a bfd_elf_section_data
Index: binutils/bfd/elf-linux-core.h
===================================================================
--- binutils.orig/bfd/elf-linux-core.h 2017-09-20 13:03:18.000000000 +0100
+++ binutils/bfd/elf-linux-core.h 2017-09-20 13:15:40.694234169 +0100
@@ -129,10 +129,14 @@ swap_linux_prpsinfo32_ugid16_out
ABI-defined, thus we choose to use char arrays here in order to
avoid dealing with different types in different architectures.
+ This is the variant for targets which use a 32-bit data type for
+ UID and GID, as most Linux ports do. The SH64 port uses a 16-bit
+ data type instead; see below for the alternative variant.
+
This structure will ultimately be written in the corefile's note
section, as the PRPSINFO. */
-struct elf_external_linux_prpsinfo64
+struct elf_external_linux_prpsinfo64_ugid32
{
char pr_state; /* Numeric process state. */
char pr_sname; /* Char for pr_state. */
@@ -151,12 +155,13 @@ struct elf_external_linux_prpsinfo64
};
/* Helper function to copy an elf_internal_linux_prpsinfo in host
- endian to an elf_external_linux_prpsinfo64 in target endian. */
+ endian to an elf_external_linux_prpsinfo64_ugid32 in target endian. */
static inline void
-swap_linux_prpsinfo64_out (bfd *obfd,
- const struct elf_internal_linux_prpsinfo *from,
- struct elf_external_linux_prpsinfo64 *to)
+swap_linux_prpsinfo64_ugid32_out
+ (bfd *obfd,
+ const struct elf_internal_linux_prpsinfo *from,
+ struct elf_external_linux_prpsinfo64_ugid32 *to)
{
bfd_put_8 (obfd, from->pr_state, &to->pr_state);
bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
@@ -173,4 +178,57 @@ swap_linux_prpsinfo64_out (bfd *obfd,
strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
}
+/* External 64-bit structure for PRPSINFO. This structure is
+ ABI-defined, thus we choose to use char arrays here in order to
+ avoid dealing with different types in different architectures.
+
+ This is the variant for the SH64 port which uses a 16-bit data
+ type for UID and GID. Most Linux ports use a 32-bit data type
+ instead; see above for the alternative variant.
+
+ This structure will ultimately be written in the corefile's note
+ section, as the PRPSINFO. */
+
+struct elf_external_linux_prpsinfo64_ugid16
+ {
+ char pr_state; /* Numeric process state. */
+ char pr_sname; /* Char for pr_state. */
+ char pr_zomb; /* Zombie. */
+ char pr_nice; /* Nice val. */
+ char gap[4];
+ char pr_flag[8]; /* Flags. */
+ char pr_uid[2];
+ char pr_gid[2];
+ char pr_pid[4];
+ char pr_ppid[4];
+ char pr_pgrp[4];
+ char pr_sid[4];
+ char pr_fname[16]; /* Filename of executable. */
+ char pr_psargs[80]; /* Initial part of arg list. */
+ };
+
+/* Helper function to copy an elf_internal_linux_prpsinfo in host
+ endian to an elf_external_linux_prpsinfo64_ugid16 in target endian. */
+
+static inline void
+swap_linux_prpsinfo64_ugid16_out
+ (bfd *obfd,
+ const struct elf_internal_linux_prpsinfo *from,
+ struct elf_external_linux_prpsinfo64_ugid16 *to)
+{
+ bfd_put_8 (obfd, from->pr_state, &to->pr_state);
+ bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
+ bfd_put_8 (obfd, from->pr_zomb, &to->pr_zomb);
+ bfd_put_8 (obfd, from->pr_nice, &to->pr_nice);
+ bfd_put_64 (obfd, from->pr_flag, to->pr_flag);
+ bfd_put_16 (obfd, from->pr_uid, to->pr_uid);
+ bfd_put_16 (obfd, from->pr_gid, to->pr_gid);
+ bfd_put_32 (obfd, from->pr_pid, to->pr_pid);
+ bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
+ bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
+ bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
+ strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
+ strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
+}
+
#endif
Index: binutils/bfd/elf.c
===================================================================
--- binutils.orig/bfd/elf.c 2017-09-20 13:03:18.000000000 +0100
+++ binutils/bfd/elf.c 2017-09-20 13:18:25.396554524 +0100
@@ -10470,11 +10470,22 @@ elfcore_write_linux_prpsinfo64
(bfd *abfd, char *buf, int *bufsiz,
const struct elf_internal_linux_prpsinfo *prpsinfo)
{
- struct elf_external_linux_prpsinfo64 data;
-
- swap_linux_prpsinfo64_out (abfd, prpsinfo, &data);
- return elfcore_write_note (abfd, buf, bufsiz,
- "CORE", NT_PRPSINFO, &data, sizeof (data));
+ if (get_elf_backend_data (abfd)->linux_prpsinfo64_ugid16)
+ {
+ struct elf_external_linux_prpsinfo64_ugid16 data;
+
+ swap_linux_prpsinfo64_ugid16_out (abfd, prpsinfo, &data);
+ return elfcore_write_note (abfd, buf, bufsiz,
+ "CORE", NT_PRPSINFO, &data, sizeof (data));
+ }
+ else
+ {
+ struct elf_external_linux_prpsinfo64_ugid32 data;
+
+ swap_linux_prpsinfo64_ugid32_out (abfd, prpsinfo, &data);
+ return elfcore_write_note (abfd, buf, bufsiz,
+ "CORE", NT_PRPSINFO, &data, sizeof (data));
+ }
}
char *
Index: binutils/bfd/elf64-sh64.c
===================================================================
--- binutils.orig/bfd/elf64-sh64.c 2017-08-02 13:13:26.000000000 +0100
+++ binutils/bfd/elf64-sh64.c 2017-09-20 13:19:29.748292419 +0100
@@ -3944,6 +3944,8 @@ static const struct bfd_elf_special_sect
#define elf_backend_got_header_size 24
#define elf_backend_dtrel_excludes_plt 1
+#define elf_backend_linux_prpsinfo64_ugid16 TRUE
+
#include "elf64-target.h"
/* NetBSD support. */
Index: binutils/bfd/elfxx-target.h
===================================================================
--- binutils.orig/bfd/elfxx-target.h 2017-09-20 13:03:18.000000000 +0100
+++ binutils/bfd/elfxx-target.h 2017-09-20 13:20:49.220803426 +0100
@@ -135,6 +135,9 @@
#ifndef elf_backend_linux_prpsinfo32_ugid16
#define elf_backend_linux_prpsinfo32_ugid16 FALSE
#endif
+#ifndef elf_backend_linux_prpsinfo64_ugid16
+#define elf_backend_linux_prpsinfo64_ugid16 FALSE
+#endif
#ifndef elf_backend_stack_align
#define elf_backend_stack_align 16
#endif
@@ -895,7 +898,8 @@ static struct elf_backend_data elfNN_bed
elf_backend_caches_rawsize,
elf_backend_extern_protected_data,
elf_backend_always_renumber_dynsyms,
- elf_backend_linux_prpsinfo32_ugid16
+ elf_backend_linux_prpsinfo32_ugid16,
+ elf_backend_linux_prpsinfo64_ugid16
};
/* Forward declaration for use when initialising alternative_target field. */
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-23 0:04 ` [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit " Maciej W. Rozycki
@ 2017-09-23 2:05 ` Sergio Durigan Junior
2017-09-24 22:19 ` Maciej W. Rozycki
0 siblings, 1 reply; 16+ messages in thread
From: Sergio Durigan Junior @ 2017-09-23 2:05 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Friday, September 22 2017, Maciej W. Rozycki wrote:
> 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.
Thanks for the patch, Maciej. Just a comment below.
>
> 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.
> ---
> bfd/elf-bfd.h | 4 +++
> bfd/elf-linux-core.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++----
> bfd/elf.c | 21 ++++++++++++---
> bfd/elf64-sh64.c | 2 +
> bfd/elfxx-target.h | 6 +++-
> 5 files changed, 90 insertions(+), 11 deletions(-)
>
> gdb-elf-linux-core-prpsinfo64-ugid.diff
> Index: binutils/bfd/elf-bfd.h
> ===================================================================
> --- binutils.orig/bfd/elf-bfd.h 2017-09-20 13:03:18.000000000 +0100
> +++ binutils/bfd/elf-bfd.h 2017-09-20 13:06:49.534308157 +0100
> @@ -1556,6 +1556,10 @@ struct elf_backend_data
> /* True if the 32-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
> members use a 16-bit data type. */
> unsigned linux_prpsinfo32_ugid16 : 1;
> +
> + /* True if the 64-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
> + members use a 16-bit data type. */
> + unsigned linux_prpsinfo64_ugid16 : 1;
> };
>
> /* Information about reloc sections associated with a bfd_elf_section_data
> Index: binutils/bfd/elf-linux-core.h
> ===================================================================
> --- binutils.orig/bfd/elf-linux-core.h 2017-09-20 13:03:18.000000000 +0100
> +++ binutils/bfd/elf-linux-core.h 2017-09-20 13:15:40.694234169 +0100
> @@ -129,10 +129,14 @@ swap_linux_prpsinfo32_ugid16_out
> ABI-defined, thus we choose to use char arrays here in order to
> avoid dealing with different types in different architectures.
>
> + This is the variant for targets which use a 32-bit data type for
> + UID and GID, as most Linux ports do. The SH64 port uses a 16-bit
> + data type instead; see below for the alternative variant.
> +
> This structure will ultimately be written in the corefile's note
> section, as the PRPSINFO. */
>
> -struct elf_external_linux_prpsinfo64
> +struct elf_external_linux_prpsinfo64_ugid32
> {
> char pr_state; /* Numeric process state. */
> char pr_sname; /* Char for pr_state. */
> @@ -151,12 +155,13 @@ struct elf_external_linux_prpsinfo64
> };
>
> /* Helper function to copy an elf_internal_linux_prpsinfo in host
> - endian to an elf_external_linux_prpsinfo64 in target endian. */
> + endian to an elf_external_linux_prpsinfo64_ugid32 in target endian. */
>
> static inline void
> -swap_linux_prpsinfo64_out (bfd *obfd,
> - const struct elf_internal_linux_prpsinfo *from,
> - struct elf_external_linux_prpsinfo64 *to)
> +swap_linux_prpsinfo64_ugid32_out
> + (bfd *obfd,
> + const struct elf_internal_linux_prpsinfo *from,
> + struct elf_external_linux_prpsinfo64_ugid32 *to)
> {
> bfd_put_8 (obfd, from->pr_state, &to->pr_state);
> bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
> @@ -173,4 +178,57 @@ swap_linux_prpsinfo64_out (bfd *obfd,
> strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
> }
>
> +/* External 64-bit structure for PRPSINFO. This structure is
> + ABI-defined, thus we choose to use char arrays here in order to
> + avoid dealing with different types in different architectures.
> +
> + This is the variant for the SH64 port which uses a 16-bit data
> + type for UID and GID. Most Linux ports use a 32-bit data type
> + instead; see above for the alternative variant.
I noticed that you put the most common definition at the top in the
previous patch (32-bit), but now you're putting the most common at the
bottom. I'd prefer if you could put the most common at the top and the
specific one at the bottom for both 32- and 64-bit cases.
> +
> + This structure will ultimately be written in the corefile's note
> + section, as the PRPSINFO. */
> +
> +struct elf_external_linux_prpsinfo64_ugid16
> + {
> + char pr_state; /* Numeric process state. */
> + char pr_sname; /* Char for pr_state. */
> + char pr_zomb; /* Zombie. */
> + char pr_nice; /* Nice val. */
> + char gap[4];
> + char pr_flag[8]; /* Flags. */
> + char pr_uid[2];
> + char pr_gid[2];
> + char pr_pid[4];
> + char pr_ppid[4];
> + char pr_pgrp[4];
> + char pr_sid[4];
> + char pr_fname[16]; /* Filename of executable. */
> + char pr_psargs[80]; /* Initial part of arg list. */
> + };
> +
> +/* Helper function to copy an elf_internal_linux_prpsinfo in host
> + endian to an elf_external_linux_prpsinfo64_ugid16 in target endian. */
> +
> +static inline void
> +swap_linux_prpsinfo64_ugid16_out
> + (bfd *obfd,
> + const struct elf_internal_linux_prpsinfo *from,
> + struct elf_external_linux_prpsinfo64_ugid16 *to)
> +{
> + bfd_put_8 (obfd, from->pr_state, &to->pr_state);
> + bfd_put_8 (obfd, from->pr_sname, &to->pr_sname);
> + bfd_put_8 (obfd, from->pr_zomb, &to->pr_zomb);
> + bfd_put_8 (obfd, from->pr_nice, &to->pr_nice);
> + bfd_put_64 (obfd, from->pr_flag, to->pr_flag);
> + bfd_put_16 (obfd, from->pr_uid, to->pr_uid);
> + bfd_put_16 (obfd, from->pr_gid, to->pr_gid);
> + bfd_put_32 (obfd, from->pr_pid, to->pr_pid);
> + bfd_put_32 (obfd, from->pr_ppid, to->pr_ppid);
> + bfd_put_32 (obfd, from->pr_pgrp, to->pr_pgrp);
> + bfd_put_32 (obfd, from->pr_sid, to->pr_sid);
> + strncpy (to->pr_fname, from->pr_fname, sizeof (to->pr_fname));
> + strncpy (to->pr_psargs, from->pr_psargs, sizeof (to->pr_psargs));
> +}
> +
> #endif
> Index: binutils/bfd/elf.c
> ===================================================================
> --- binutils.orig/bfd/elf.c 2017-09-20 13:03:18.000000000 +0100
> +++ binutils/bfd/elf.c 2017-09-20 13:18:25.396554524 +0100
> @@ -10470,11 +10470,22 @@ elfcore_write_linux_prpsinfo64
> (bfd *abfd, char *buf, int *bufsiz,
> const struct elf_internal_linux_prpsinfo *prpsinfo)
> {
> - struct elf_external_linux_prpsinfo64 data;
> -
> - swap_linux_prpsinfo64_out (abfd, prpsinfo, &data);
> - return elfcore_write_note (abfd, buf, bufsiz,
> - "CORE", NT_PRPSINFO, &data, sizeof (data));
> + if (get_elf_backend_data (abfd)->linux_prpsinfo64_ugid16)
> + {
> + struct elf_external_linux_prpsinfo64_ugid16 data;
> +
> + swap_linux_prpsinfo64_ugid16_out (abfd, prpsinfo, &data);
> + return elfcore_write_note (abfd, buf, bufsiz,
> + "CORE", NT_PRPSINFO, &data, sizeof (data));
> + }
> + else
> + {
> + struct elf_external_linux_prpsinfo64_ugid32 data;
> +
> + swap_linux_prpsinfo64_ugid32_out (abfd, prpsinfo, &data);
> + return elfcore_write_note (abfd, buf, bufsiz,
> + "CORE", NT_PRPSINFO, &data, sizeof (data));
> + }
> }
>
> char *
> Index: binutils/bfd/elf64-sh64.c
> ===================================================================
> --- binutils.orig/bfd/elf64-sh64.c 2017-08-02 13:13:26.000000000 +0100
> +++ binutils/bfd/elf64-sh64.c 2017-09-20 13:19:29.748292419 +0100
> @@ -3944,6 +3944,8 @@ static const struct bfd_elf_special_sect
> #define elf_backend_got_header_size 24
> #define elf_backend_dtrel_excludes_plt 1
>
> +#define elf_backend_linux_prpsinfo64_ugid16 TRUE
> +
> #include "elf64-target.h"
>
> /* NetBSD support. */
> Index: binutils/bfd/elfxx-target.h
> ===================================================================
> --- binutils.orig/bfd/elfxx-target.h 2017-09-20 13:03:18.000000000 +0100
> +++ binutils/bfd/elfxx-target.h 2017-09-20 13:20:49.220803426 +0100
> @@ -135,6 +135,9 @@
> #ifndef elf_backend_linux_prpsinfo32_ugid16
> #define elf_backend_linux_prpsinfo32_ugid16 FALSE
> #endif
> +#ifndef elf_backend_linux_prpsinfo64_ugid16
> +#define elf_backend_linux_prpsinfo64_ugid16 FALSE
> +#endif
> #ifndef elf_backend_stack_align
> #define elf_backend_stack_align 16
> #endif
> @@ -895,7 +898,8 @@ static struct elf_backend_data elfNN_bed
> elf_backend_caches_rawsize,
> elf_backend_extern_protected_data,
> elf_backend_always_renumber_dynsyms,
> - elf_backend_linux_prpsinfo32_ugid16
> + elf_backend_linux_prpsinfo32_ugid16,
> + elf_backend_linux_prpsinfo64_ugid16
> };
>
> /* Forward declaration for use when initialising alternative_target field. */
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-23 2:05 ` Sergio Durigan Junior
@ 2017-09-24 22:19 ` Maciej W. Rozycki
2017-09-24 23:32 ` Sergio Durigan Junior
0 siblings, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-24 22:19 UTC (permalink / raw)
To: Sergio Durigan Junior
Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Sat, 23 Sep 2017, Sergio Durigan Junior wrote:
> I noticed that you put the most common definition at the top in the
> previous patch (32-bit), but now you're putting the most common at the
> bottom. I'd prefer if you could put the most common at the top and the
> specific one at the bottom for both 32- and 64-bit cases.
I placed both 32-bit UID/GID versions ahead of their respective 16-bit
counterparts, recognising that the 32-bit versions are the default in BFD,
which in turns follows Linux's <asm-generic/posix_types.h> default. The
32-bit UID/GID versions are also the predominant choice in Linux, for both
32-bit ports (ARC, Blackfin, TI C6X, H8/300, Hexagon*, Meta, MicroBlaze,
MIPS, Nios II, OpenRISC, PA-RISC, PowerPC, TILE, UniCore-32*, Xtensa) and
64-bit ports (all except SuperH).
I hope it clarifies my choice and I think it makes sense this way.
Maciej
[*] Binutils port not upstream.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-24 22:19 ` Maciej W. Rozycki
@ 2017-09-24 23:32 ` Sergio Durigan Junior
2017-09-25 9:48 ` Maciej W. Rozycki
0 siblings, 1 reply; 16+ messages in thread
From: Sergio Durigan Junior @ 2017-09-24 23:32 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Sunday, September 24 2017, Maciej W. Rozycki wrote:
> On Sat, 23 Sep 2017, Sergio Durigan Junior wrote:
>
>> I noticed that you put the most common definition at the top in the
>> previous patch (32-bit), but now you're putting the most common at the
>> bottom. I'd prefer if you could put the most common at the top and the
>> specific one at the bottom for both 32- and 64-bit cases.
>
> I placed both 32-bit UID/GID versions ahead of their respective 16-bit
> counterparts, recognising that the 32-bit versions are the default in BFD,
> which in turns follows Linux's <asm-generic/posix_types.h> default. The
> 32-bit UID/GID versions are also the predominant choice in Linux, for both
> 32-bit ports (ARC, Blackfin, TI C6X, H8/300, Hexagon*, Meta, MicroBlaze,
> MIPS, Nios II, OpenRISC, PA-RISC, PowerPC, TILE, UniCore-32*, Xtensa) and
> 64-bit ports (all except SuperH).
>
> I hope it clarifies my choice and I think it makes sense this way.
>
> Maciej
>
> [*] Binutils port not upstream.
Sure, thanks for explaining. I understand it's a matter of taste and as
I said, it's really a nitpick. I still think the patch is good as is
and a nice improvement to the current situation.
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-24 23:32 ` Sergio Durigan Junior
@ 2017-09-25 9:48 ` Maciej W. Rozycki
2017-09-25 16:49 ` Sergio Durigan Junior
0 siblings, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-25 9:48 UTC (permalink / raw)
To: Sergio Durigan Junior
Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Mon, 25 Sep 2017, Sergio Durigan Junior wrote:
> Sure, thanks for explaining. I understand it's a matter of taste and as
> I said, it's really a nitpick. I still think the patch is good as is
> and a nice improvement to the current situation.
FAOD, among `prpsinfo32_ugid16', `prpsinfo32_ugid32', `prpsinfo64_ugid16'
and `prpsinfo64_ugid32' what order did you have in mind?
Maciej
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit Linux core PRPSINFO note
2017-09-25 9:48 ` Maciej W. Rozycki
@ 2017-09-25 16:49 ` Sergio Durigan Junior
0 siblings, 0 replies; 16+ messages in thread
From: Sergio Durigan Junior @ 2017-09-25 16:49 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Monday, September 25 2017, Maciej W. Rozycki wrote:
> On Mon, 25 Sep 2017, Sergio Durigan Junior wrote:
>
>> Sure, thanks for explaining. I understand it's a matter of taste and as
>> I said, it's really a nitpick. I still think the patch is good as is
>> and a nice improvement to the current situation.
>
> FAOD, among `prpsinfo32_ugid16', `prpsinfo32_ugid32', `prpsinfo64_ugid16'
> and `prpsinfo64_ugid32' what order did you have in mind?
Actually, I gave it a thought and I agree with the way you organized
it. The ordering makes total sense to me now.
Thanks,
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 4/4] GDB: Remove Linux core PRPSINFO note writer override
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
` (2 preceding siblings ...)
2017-09-23 0:04 ` [PATCH 3/4] ELF/BFD: Handle both variants of the 64-bit " Maciej W. Rozycki
@ 2017-09-23 0:05 ` Maciej W. Rozycki
2017-09-23 2:10 ` [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Sergio Durigan Junior
` (2 subsequent siblings)
6 siblings, 0 replies; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-23 0:05 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
Revert parts of commit b3ac9c77560a ("Put more info in NT_PRPSINFO Linux
notes"), <https://sourceware.org/ml/binutils/2013-02/msg00024.html>, and
remove support for a Linux core PRPSINFO note writer override, now that
all variants are handled automatically within BFD itself.
gdb/
* linux-tdep.c (linux_make_corefile_notes): Remove call to
`gdbarch_elfcore_write_linux_prpsinfo'.
* gdbarch.sh (elfcore_write_linux_prpsinfo): Remove architecture
method.
(elf_internal_linux_prpsinfo): Remove declaration.
* gdbarch.h: Regenerate.
* gdbarch.c: Regenerate.
---
gdb/gdbarch.c | 32 --------------------------------
gdb/gdbarch.h | 13 -------------
gdb/gdbarch.sh | 8 --------
gdb/linux-tdep.c | 23 +++++++----------------
4 files changed, 7 insertions(+), 69 deletions(-)
gdb-gdbarch-elfcore-write-linux-prpsinfo.diff
Index: binutils/gdb/gdbarch.c
===================================================================
--- binutils.orig/gdb/gdbarch.c 2017-09-15 13:54:01.000000000 +0100
+++ binutils/gdb/gdbarch.c 2017-09-20 01:02:46.584755366 +0100
@@ -281,7 +281,6 @@ struct gdbarch
gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument;
gdbarch_iterate_over_regset_sections_ftype *iterate_over_regset_sections;
gdbarch_make_corefile_notes_ftype *make_corefile_notes;
- gdbarch_elfcore_write_linux_prpsinfo_ftype *elfcore_write_linux_prpsinfo;
gdbarch_find_memory_regions_ftype *find_memory_regions;
gdbarch_core_xfer_shared_libraries_ftype *core_xfer_shared_libraries;
gdbarch_core_xfer_shared_libraries_aix_ftype *core_xfer_shared_libraries_aix;
@@ -641,7 +640,6 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of fetch_pointer_argument, has predicate. */
/* Skip verify of iterate_over_regset_sections, has predicate. */
/* Skip verify of make_corefile_notes, has predicate. */
- /* Skip verify of elfcore_write_linux_prpsinfo, has predicate. */
/* Skip verify of find_memory_regions, has predicate. */
/* Skip verify of core_xfer_shared_libraries, has predicate. */
/* Skip verify of core_xfer_shared_libraries_aix, has predicate. */
@@ -973,12 +971,6 @@ gdbarch_dump (struct gdbarch *gdbarch, s
"gdbarch_dump: elf_make_msymbol_special = <%s>\n",
host_address_to_string (gdbarch->elf_make_msymbol_special));
fprintf_unfiltered (file,
- "gdbarch_dump: gdbarch_elfcore_write_linux_prpsinfo_p() = %d\n",
- gdbarch_elfcore_write_linux_prpsinfo_p (gdbarch));
- fprintf_unfiltered (file,
- "gdbarch_dump: elfcore_write_linux_prpsinfo = <%s>\n",
- host_address_to_string (gdbarch->elfcore_write_linux_prpsinfo));
- fprintf_unfiltered (file,
"gdbarch_dump: execute_dwarf_cfa_vendor_op = <%s>\n",
host_address_to_string (gdbarch->execute_dwarf_cfa_vendor_op));
fprintf_unfiltered (file,
@@ -3661,30 +3653,6 @@ set_gdbarch_make_corefile_notes (struct
}
int
-gdbarch_elfcore_write_linux_prpsinfo_p (struct gdbarch *gdbarch)
-{
- gdb_assert (gdbarch != NULL);
- return gdbarch->elfcore_write_linux_prpsinfo != NULL;
-}
-
-char *
-gdbarch_elfcore_write_linux_prpsinfo (struct gdbarch *gdbarch, bfd *obfd, char *note_data, int *note_size, const struct elf_internal_linux_prpsinfo *info)
-{
- gdb_assert (gdbarch != NULL);
- gdb_assert (gdbarch->elfcore_write_linux_prpsinfo != NULL);
- if (gdbarch_debug >= 2)
- fprintf_unfiltered (gdb_stdlog, "gdbarch_elfcore_write_linux_prpsinfo called\n");
- return gdbarch->elfcore_write_linux_prpsinfo (obfd, note_data, note_size, info);
-}
-
-void
-set_gdbarch_elfcore_write_linux_prpsinfo (struct gdbarch *gdbarch,
- gdbarch_elfcore_write_linux_prpsinfo_ftype elfcore_write_linux_prpsinfo)
-{
- gdbarch->elfcore_write_linux_prpsinfo = elfcore_write_linux_prpsinfo;
-}
-
-int
gdbarch_find_memory_regions_p (struct gdbarch *gdbarch)
{
gdb_assert (gdbarch != NULL);
Index: binutils/gdb/gdbarch.h
===================================================================
--- binutils.orig/gdb/gdbarch.h 2017-08-11 18:17:40.000000000 +0100
+++ binutils/gdb/gdbarch.h 2017-09-20 01:02:52.288155019 +0100
@@ -62,7 +62,6 @@ struct axs_value;
struct stap_parse_info;
struct parser_state;
struct ravenscar_arch_ops;
-struct elf_internal_linux_prpsinfo;
struct mem_range;
struct syscalls_info;
struct thread_info;
@@ -876,18 +875,6 @@ typedef char * (gdbarch_make_corefile_no
extern char * gdbarch_make_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, int *note_size);
extern void set_gdbarch_make_corefile_notes (struct gdbarch *gdbarch, gdbarch_make_corefile_notes_ftype *make_corefile_notes);
-/* The elfcore writer hook to use to write Linux prpsinfo notes to core
- files. Most Linux architectures use the same prpsinfo32 or
- prpsinfo64 layouts, and so won't need to provide this hook, as we
- call the Linux generic routines in bfd to write prpsinfo notes by
- default. */
-
-extern int gdbarch_elfcore_write_linux_prpsinfo_p (struct gdbarch *gdbarch);
-
-typedef char * (gdbarch_elfcore_write_linux_prpsinfo_ftype) (bfd *obfd, char *note_data, int *note_size, const struct elf_internal_linux_prpsinfo *info);
-extern char * gdbarch_elfcore_write_linux_prpsinfo (struct gdbarch *gdbarch, bfd *obfd, char *note_data, int *note_size, const struct elf_internal_linux_prpsinfo *info);
-extern void set_gdbarch_elfcore_write_linux_prpsinfo (struct gdbarch *gdbarch, gdbarch_elfcore_write_linux_prpsinfo_ftype *elfcore_write_linux_prpsinfo);
-
/* Find core file memory regions */
extern int gdbarch_find_memory_regions_p (struct gdbarch *gdbarch);
Index: binutils/gdb/gdbarch.sh
===================================================================
--- binutils.orig/gdb/gdbarch.sh 2017-09-15 13:54:01.000000000 +0100
+++ binutils/gdb/gdbarch.sh 2017-09-20 01:00:11.068519662 +0100
@@ -728,13 +728,6 @@ M;void;iterate_over_regset_sections;iter
# Create core file notes
M;char *;make_corefile_notes;bfd *obfd, int *note_size;obfd, note_size
-# The elfcore writer hook to use to write Linux prpsinfo notes to core
-# files. Most Linux architectures use the same prpsinfo32 or
-# prpsinfo64 layouts, and so won't need to provide this hook, as we
-# call the Linux generic routines in bfd to write prpsinfo notes by
-# default.
-F;char *;elfcore_write_linux_prpsinfo;bfd *obfd, char *note_data, int *note_size, const struct elf_internal_linux_prpsinfo *info;obfd, note_data, note_size, info
-
# Find core file memory regions
M;int;find_memory_regions;find_memory_region_ftype func, void *data;func, data
@@ -1287,7 +1280,6 @@ struct axs_value;
struct stap_parse_info;
struct parser_state;
struct ravenscar_arch_ops;
-struct elf_internal_linux_prpsinfo;
struct mem_range;
struct syscalls_info;
struct thread_info;
Index: binutils/gdb/linux-tdep.c
===================================================================
--- binutils.orig/gdb/linux-tdep.c 2017-09-15 13:54:02.000000000 +0100
+++ binutils/gdb/linux-tdep.c 2017-09-20 01:02:04.909851990 +0100
@@ -1955,23 +1955,14 @@ linux_make_corefile_notes (struct gdbarc
if (linux_fill_prpsinfo (&prpsinfo))
{
- if (gdbarch_elfcore_write_linux_prpsinfo_p (gdbarch))
- {
- note_data = gdbarch_elfcore_write_linux_prpsinfo (gdbarch, obfd,
- note_data, note_size,
- &prpsinfo);
- }
+ if (gdbarch_ptr_bit (gdbarch) == 64)
+ note_data = elfcore_write_linux_prpsinfo64 (obfd,
+ note_data, note_size,
+ &prpsinfo);
else
- {
- if (gdbarch_ptr_bit (gdbarch) == 64)
- note_data = elfcore_write_linux_prpsinfo64 (obfd,
- note_data, note_size,
- &prpsinfo);
- else
- note_data = elfcore_write_linux_prpsinfo32 (obfd,
- note_data, note_size,
- &prpsinfo);
- }
+ note_data = elfcore_write_linux_prpsinfo32 (obfd,
+ note_data, note_size,
+ &prpsinfo);
}
/* Thread register information. */
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
` (3 preceding siblings ...)
2017-09-23 0:05 ` [PATCH 4/4] GDB: Remove Linux core PRPSINFO note writer override Maciej W. Rozycki
@ 2017-09-23 2:10 ` Sergio Durigan Junior
2017-09-24 23:46 ` Alan Modra
2017-09-29 21:11 ` [PING][PATCH " Maciej W. Rozycki
6 siblings, 0 replies; 16+ messages in thread
From: Sergio Durigan Junior @ 2017-09-23 2:10 UTC (permalink / raw)
To: Maciej W. Rozycki; +Cc: binutils, gdb-patches, Pedro Alves, Djordje Todorovic
On Friday, September 22 2017, Maciej W. Rozycki wrote:
> Hi,
>
> This patch series addresses problems with Linux core PRPSINFO note
> definitions, discovered in the course of Djordje's MIPS PID extraction
> patch review. See individual patch descriptions for details.
>
> These changes have passed binutils regression testing against my usual
> targets (for the BFD part) and also native GDB regression testing with the
> `x86_64-linux-gnu' target and the `mips-linux-gnu' n64 target (for the GDB
> part, and the `gcore' command in particular).
>
> OK to apply?
Hey Maciej,
Aside from a small nit on patch #3, I really like the direction you
chose on this patch. I am not a binutils maintainer and not a GDB
global maintainer, so I cannot approve it, but it does look good to me
and makes the existing code more logical and simpler to follow.
I also like the fact that you removed the responsibility that GDB had to
decide which prpsinfo structure it would use. That's something I
remember struggling with when I was hacking the initial patch, and I'm
glad this patch solves it.
So, LGTM.
Thanks,
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
^ permalink raw reply [flat|nested] 16+ messages in thread* Re: [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
` (4 preceding siblings ...)
2017-09-23 2:10 ` [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Sergio Durigan Junior
@ 2017-09-24 23:46 ` Alan Modra
2017-09-29 21:11 ` [PING][PATCH " Maciej W. Rozycki
6 siblings, 0 replies; 16+ messages in thread
From: Alan Modra @ 2017-09-24 23:46 UTC (permalink / raw)
To: Maciej W. Rozycki
Cc: binutils, gdb-patches, Sergio Durigan Junior, Pedro Alves,
Djordje Todorovic
On Sat, Sep 23, 2017 at 01:02:20AM +0100, Maciej W. Rozycki wrote:
> Hi,
>
> This patch series addresses problems with Linux core PRPSINFO note
> definitions, discovered in the course of Djordje's MIPS PID extraction
> patch review. See individual patch descriptions for details.
>
> These changes have passed binutils regression testing against my usual
> targets (for the BFD part) and also native GDB regression testing with the
> `x86_64-linux-gnu' target and the `mips-linux-gnu' n64 target (for the GDB
> part, and the `gcore' command in particular).
>
> OK to apply?
The binutils changes are OK. Thanks!
--
Alan Modra
Australia Development Lab, IBM
^ permalink raw reply [flat|nested] 16+ messages in thread* [PING][PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-09-23 0:02 [PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions Maciej W. Rozycki
` (5 preceding siblings ...)
2017-09-24 23:46 ` Alan Modra
@ 2017-09-29 21:11 ` Maciej W. Rozycki
2017-10-11 0:32 ` [PING^2][PATCH " Maciej W. Rozycki
6 siblings, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-09-29 21:11 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
On Sat, 23 Sep 2017, Maciej W. Rozycki wrote:
> This patch series addresses problems with Linux core PRPSINFO note
> definitions, discovered in the course of Djordje's MIPS PID extraction
> patch review. See individual patch descriptions for details.
Ping! The GDB side of this patch series, specifically:
<https://sourceware.org/ml/gdb-patches/2017-09/msg00710.html>
<https://sourceware.org/ml/gdb-patches/2017-09/msg00712.html>
is still pending review, please help.
Maciej
^ permalink raw reply [flat|nested] 16+ messages in thread* [PING^2][PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-09-29 21:11 ` [PING][PATCH " Maciej W. Rozycki
@ 2017-10-11 0:32 ` Maciej W. Rozycki
2017-10-11 9:41 ` Pedro Alves
0 siblings, 1 reply; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-10-11 0:32 UTC (permalink / raw)
To: binutils, gdb-patches
Cc: Sergio Durigan Junior, Pedro Alves, Djordje Todorovic
On Fri, 29 Sep 2017, Maciej W. Rozycki wrote:
> On Sat, 23 Sep 2017, Maciej W. Rozycki wrote:
>
> > This patch series addresses problems with Linux core PRPSINFO note
> > definitions, discovered in the course of Djordje's MIPS PID extraction
> > patch review. See individual patch descriptions for details.
>
> Ping! The GDB side of this patch series, specifically:
>
> <https://sourceware.org/ml/gdb-patches/2017-09/msg00710.html>
> <https://sourceware.org/ml/gdb-patches/2017-09/msg00712.html>
>
> is still pending review, please help.
Ping!
Maciej
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PING^2][PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-10-11 0:32 ` [PING^2][PATCH " Maciej W. Rozycki
@ 2017-10-11 9:41 ` Pedro Alves
2017-10-11 14:06 ` Maciej W. Rozycki
0 siblings, 1 reply; 16+ messages in thread
From: Pedro Alves @ 2017-10-11 9:41 UTC (permalink / raw)
To: Maciej W. Rozycki, binutils, gdb-patches
Cc: Sergio Durigan Junior, Djordje Todorovic
Hi Maciej,
On 10/11/2017 01:32 AM, Maciej W. Rozycki wrote:
> On Fri, 29 Sep 2017, Maciej W. Rozycki wrote:
>
>> On Sat, 23 Sep 2017, Maciej W. Rozycki wrote:
>>
>>> This patch series addresses problems with Linux core PRPSINFO note
>>> definitions, discovered in the course of Djordje's MIPS PID extraction
>>> patch review. See individual patch descriptions for details.
>>
>> Ping! The GDB side of this patch series, specifically:
>>
>> <https://sourceware.org/ml/gdb-patches/2017-09/msg00710.html>
>> <https://sourceware.org/ml/gdb-patches/2017-09/msg00712.html>
>>
>> is still pending review, please help.
>
> Ping!
The GDB changes are OK.
Thanks,
Pedro Alves
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PING^2][PATCH 0/4] Fix issues with Linux core PRPSINFO note definitions
2017-10-11 9:41 ` Pedro Alves
@ 2017-10-11 14:06 ` Maciej W. Rozycki
0 siblings, 0 replies; 16+ messages in thread
From: Maciej W. Rozycki @ 2017-10-11 14:06 UTC (permalink / raw)
To: Pedro Alves, Alan Modra
Cc: binutils, gdb-patches, Sergio Durigan Junior, Djordje Todorovic
On Wed, 11 Oct 2017, Pedro Alves wrote:
> >>> This patch series addresses problems with Linux core PRPSINFO note
> >>> definitions, discovered in the course of Djordje's MIPS PID extraction
> >>> patch review. See individual patch descriptions for details.
> >>
> >> Ping! The GDB side of this patch series, specifically:
> >>
> >> <https://sourceware.org/ml/gdb-patches/2017-09/msg00710.html>
> >> <https://sourceware.org/ml/gdb-patches/2017-09/msg00712.html>
> >>
> >> is still pending review, please help.
> >
> > Ping!
>
> The GDB changes are OK.
Applied now. Thank you both for the review.
Maciej
^ permalink raw reply [flat|nested] 16+ messages in thread