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/elf-linux-core.h | |
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/elf-linux-core.h')
-rw-r--r-- | bfd/elf-linux-core.h | 96 |
1 files changed, 46 insertions, 50 deletions
diff --git a/bfd/elf-linux-core.h b/bfd/elf-linux-core.h index ceb88bd..48fd5ae 100644 --- a/bfd/elf-linux-core.h +++ b/bfd/elf-linux-core.h @@ -18,8 +18,8 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -#ifndef ELF_LINUX_PSINFO_H -#define ELF_LINUX_PSINFO_H +#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 @@ -49,30 +49,28 @@ struct elf_external_linux_prpsinfo32 char pr_psargs[80]; /* Initial part of arg list. */ }; -/* Helper macro to swap (properly handling endianess) things from the - `elf_internal_linux_prpsinfo' structure to the - `elf_external_linux_prpsinfo32' structure. - - Note that FROM should be a pointer, and TO should be the explicit - type. */ - -#define 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_16 (abfd, from->pr_uid, to.pr_uid); \ - H_PUT_16 (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_linux_prpsinfo32 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) +{ + 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_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)); +} /* External 64-bit structure for PRPSINFO. This structure is ABI-defined, thus we choose to use char arrays here in order to @@ -99,29 +97,27 @@ struct elf_external_linux_prpsinfo64 char pr_psargs[80]; /* Initial part of arg list. */ }; -/* Helper macro to swap (properly handling endianess) things from the - `elf_internal_linux_prpsinfo' structure to the - `elf_external_linux_prpsinfo64' structure. - - Note that FROM should be a pointer, and TO should be the explicit - type. */ - -#define LINUX_PRPSINFO64_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_64 (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_linux_prpsinfo64 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) +{ + 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_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)); +} #endif |