diff options
author | Alan Modra <amodra@gmail.com> | 2016-01-21 13:33:53 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2016-01-21 19:59:33 +1030 |
commit | aeb7056972f1b383578204b9151b0ae6d8c1df81 (patch) | |
tree | 19f5bd87b724ab2b626ec0f6acd3bde22f029de7 /bfd/elf32-ppc.c | |
parent | de64ce13a78669f094d6909fce51d210e2f9d2c0 (diff) | |
download | fsf-binutils-gdb-aeb7056972f1b383578204b9151b0ae6d8c1df81.zip fsf-binutils-gdb-aeb7056972f1b383578204b9151b0ae6d8c1df81.tar.gz fsf-binutils-gdb-aeb7056972f1b383578204b9151b0ae6d8c1df81.tar.bz2 |
Convert macros in elf-linux-core.h to inline functions
Besides changing some macros into inline functions, this removes
redundant memsets and uses bfd_put_* rather than H_PUT_*.
* elf-linux-core.h (swap_linux_prpsinfo32_out): New function.
(swap_linux_prpsinfo64_out): New function.
(LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
(LINUX_PRPSINFO64_SWAP_FIELDS): Delete.
* elf.c (elfcore_write_linux_prpsinfo32): Adjust. Don't memset.
(elfcore_write_linux_prpsinfo64): Likewise.
* elf32-ppc.c (swap_ppc_linux_prpsinfo32_out): New function.
(PPC_LINUX_PRPSINFO32_SWAP_FIELDS): Delete.
(elfcore_write_ppc_linux_prpsinfo32): Adjust. Don't memset.
Diffstat (limited to 'bfd/elf32-ppc.c')
-rw-r--r-- | bfd/elf32-ppc.c | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index c2f2b70..369a5e6 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -1818,30 +1818,28 @@ struct elf_external_ppc_linux_prpsinfo32 char pr_psargs[80]; /* Initial part of arg list. */ }; -/* Helper macro to swap (properly handling endianess) things from the - `elf_internal_prpsinfo' structure to the `elf_external_ppc_prpsinfo32' - structure. - - Note that FROM should be a pointer, and TO should be the explicit type. */ - -#define PPC_LINUX_PRPSINFO32_SWAP_FIELDS(abfd, from, to) \ - do \ - { \ - H_PUT_8 (abfd, from->pr_state, &to.pr_state); \ - H_PUT_8 (abfd, from->pr_sname, &to.pr_sname); \ - H_PUT_8 (abfd, from->pr_zomb, &to.pr_zomb); \ - H_PUT_8 (abfd, from->pr_nice, &to.pr_nice); \ - H_PUT_32 (abfd, from->pr_flag, to.pr_flag); \ - H_PUT_32 (abfd, from->pr_uid, to.pr_uid); \ - H_PUT_32 (abfd, from->pr_gid, to.pr_gid); \ - H_PUT_32 (abfd, from->pr_pid, to.pr_pid); \ - H_PUT_32 (abfd, from->pr_ppid, to.pr_ppid); \ - H_PUT_32 (abfd, from->pr_pgrp, to.pr_pgrp); \ - H_PUT_32 (abfd, 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)); \ - } while (0) +/* 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)); +} /* Initialize the ppc_elf_howto_table, so that linear accesses can be done. */ @@ -2296,14 +2294,15 @@ ppc_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note) } char * -elfcore_write_ppc_linux_prpsinfo32 (bfd *abfd, char *buf, int *bufsiz, - const struct elf_internal_linux_prpsinfo *prpsinfo) +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; - memset (&data, 0, sizeof (data)); - PPC_LINUX_PRPSINFO32_SWAP_FIELDS (abfd, prpsinfo, data); - + swap_ppc_linux_prpsinfo32_out (abfd, prpsinfo, &data); return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO, &data, sizeof (data)); } |