/* Support for the generic parts of PE/PEI; common header information.
   Copyright (C) 1995-2024 Free Software Foundation, Inc.
   Written by Cygnus Solutions.

   This file is part of BFD, the Binary File Descriptor library.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */

#ifndef _LIBPEI_H
#define _LIBPEI_H

/* Most of this hacked by  Steve Chamberlain,
			sac@cygnus.com

   PE/PEI rearrangement (and code added): Donn Terry
				       Softway Systems, Inc.  */

/* Hey look, some documentation [and in a place you expect to find it]!

   The main reference for the pei format is "Microsoft Portable Executable
   and Common Object File Format Specification 4.1".  Get it if you need to
   do some serious hacking on this code.

   Another reference:
   "Peering Inside the PE: A Tour of the Win32 Portable Executable
   File Format", MSJ 1994, Volume 9.

   The *sole* difference between the pe format and the pei format is that the
   latter has an MSDOS 2.0 .exe header on the front that prints the message
   "This app must be run under Windows." (or some such).
   (FIXME: Whether that statement is *really* true or not is unknown.
   Are there more subtle differences between pe and pei formats?
   For now assume there aren't.  If you find one, then for God sakes
   document it here!)

   The Microsoft docs use the word "image" instead of "executable" because
   the former can also refer to a DLL (shared library).  Confusion can arise
   because the `i' in `pei' also refers to "image".  The `pe' format can
   also create images (i.e. executables), it's just that to run on a win32
   system you need to use the pei format.

   FIXME: Please add more docs here so the next poor fool that has to hack
   on this code has a chance of getting something accomplished without
   wasting too much time.  */

#ifndef GET_FCN_LNNOPTR
#define GET_FCN_LNNOPTR(abfd, ext) \
  H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr)
#endif

#ifndef GET_FCN_ENDNDX
#define GET_FCN_ENDNDX(abfd, ext) \
  H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_endndx)
#endif

#ifndef PUT_FCN_LNNOPTR
#define PUT_FCN_LNNOPTR(abfd, in, ext) \
  H_PUT_32(abfd, in, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr)
#endif
#ifndef PUT_FCN_ENDNDX
#define PUT_FCN_ENDNDX(abfd, in, ext) \
  H_PUT_32(abfd, in, ext->x_sym.x_fcnary.x_fcn.x_endndx)
#endif
#ifndef GET_LNSZ_LNNO
#define GET_LNSZ_LNNO(abfd, ext) \
  H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_lnno)
#endif
#ifndef GET_LNSZ_SIZE
#define GET_LNSZ_SIZE(abfd, ext) \
  H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_size)
#endif
#ifndef PUT_LNSZ_LNNO
#define PUT_LNSZ_LNNO(abfd, in, ext) \
  H_PUT_16(abfd, in, ext->x_sym.x_misc.x_lnsz.x_lnno)
#endif
#ifndef PUT_LNSZ_SIZE
#define PUT_LNSZ_SIZE(abfd, in, ext) \
  H_PUT_16(abfd, in, ext->x_sym.x_misc.x_lnsz.x_size)
#endif
#ifndef GET_SCN_SCNLEN
#define GET_SCN_SCNLEN(abfd, ext) \
  H_GET_32 (abfd, ext->x_scn.x_scnlen)
#endif
#ifndef GET_SCN_NRELOC
#define GET_SCN_NRELOC(abfd, ext) \
  H_GET_16 (abfd, ext->x_scn.x_nreloc)
#endif
#ifndef GET_SCN_NLINNO
#define GET_SCN_NLINNO(abfd, ext) \
  H_GET_16 (abfd, ext->x_scn.x_nlinno)
#endif
#ifndef PUT_SCN_SCNLEN
#define PUT_SCN_SCNLEN(abfd, in, ext) \
  H_PUT_32(abfd, in, ext->x_scn.x_scnlen)
#endif
#ifndef PUT_SCN_NRELOC
#define PUT_SCN_NRELOC(abfd, in, ext) \
  H_PUT_16(abfd, in, ext->x_scn.x_nreloc)
#endif
#ifndef PUT_SCN_NLINNO
#define PUT_SCN_NLINNO(abfd, in, ext) \
  H_PUT_16(abfd,in, ext->x_scn.x_nlinno)
#endif
#ifndef GET_LINENO_LNNO
#define GET_LINENO_LNNO(abfd, ext) \
  H_GET_16 (abfd, ext->l_lnno);
#endif
#ifndef PUT_LINENO_LNNO
#define PUT_LINENO_LNNO(abfd, val, ext) \
  H_PUT_16(abfd,val, ext->l_lnno);
#endif

/* The f_symptr field in the filehdr is sometimes 64 bits.  */
#ifndef GET_FILEHDR_SYMPTR
#define GET_FILEHDR_SYMPTR H_GET_32
#endif
#ifndef PUT_FILEHDR_SYMPTR
#define PUT_FILEHDR_SYMPTR H_PUT_32
#endif

/* Some fields in the aouthdr are sometimes 64 bits.  */
#ifndef GET_AOUTHDR_TSIZE
#define GET_AOUTHDR_TSIZE H_GET_32
#endif
#ifndef PUT_AOUTHDR_TSIZE
#define PUT_AOUTHDR_TSIZE H_PUT_32
#endif
#ifndef GET_AOUTHDR_DSIZE
#define GET_AOUTHDR_DSIZE H_GET_32
#endif
#ifndef PUT_AOUTHDR_DSIZE
#define PUT_AOUTHDR_DSIZE H_PUT_32
#endif
#ifndef GET_AOUTHDR_BSIZE
#define GET_AOUTHDR_BSIZE H_GET_32
#endif
#ifndef PUT_AOUTHDR_BSIZE
#define PUT_AOUTHDR_BSIZE H_PUT_32
#endif
#ifndef GET_AOUTHDR_ENTRY
#define GET_AOUTHDR_ENTRY H_GET_32
#endif
#ifndef PUT_AOUTHDR_ENTRY
#define PUT_AOUTHDR_ENTRY H_PUT_32
#endif
#ifndef GET_AOUTHDR_TEXT_START
#define GET_AOUTHDR_TEXT_START H_GET_32
#endif
#ifndef PUT_AOUTHDR_TEXT_START
#define PUT_AOUTHDR_TEXT_START H_PUT_32
#endif
#ifndef GET_AOUTHDR_DATA_START
#define GET_AOUTHDR_DATA_START H_GET_32
#endif
#ifndef PUT_AOUTHDR_DATA_START
#define PUT_AOUTHDR_DATA_START H_PUT_32
#endif

/* Some fields in the scnhdr are sometimes 64 bits.  */
#ifndef GET_SCNHDR_PADDR
#define GET_SCNHDR_PADDR H_GET_32
#endif
#ifndef PUT_SCNHDR_PADDR
#define PUT_SCNHDR_PADDR H_PUT_32
#endif
#ifndef GET_SCNHDR_VADDR
#define GET_SCNHDR_VADDR H_GET_32
#endif
#ifndef PUT_SCNHDR_VADDR
#define PUT_SCNHDR_VADDR H_PUT_32
#endif
#ifndef GET_SCNHDR_SIZE
#define GET_SCNHDR_SIZE H_GET_32
#endif
#ifndef PUT_SCNHDR_SIZE
#define PUT_SCNHDR_SIZE H_PUT_32
#endif
#ifndef GET_SCNHDR_SCNPTR
#define GET_SCNHDR_SCNPTR H_GET_32
#endif
#ifndef PUT_SCNHDR_SCNPTR
#define PUT_SCNHDR_SCNPTR H_PUT_32
#endif
#ifndef GET_SCNHDR_RELPTR
#define GET_SCNHDR_RELPTR H_GET_32
#endif
#ifndef PUT_SCNHDR_RELPTR
#define PUT_SCNHDR_RELPTR H_PUT_32
#endif
#ifndef GET_SCNHDR_LNNOPTR
#define GET_SCNHDR_LNNOPTR H_GET_32
#endif
#ifndef PUT_SCNHDR_LNNOPTR
#define PUT_SCNHDR_LNNOPTR H_PUT_32
#endif

#ifdef COFF_WITH_pex64

#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
#define GET_PDATA_ENTRY			 bfd_get_32

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_pex64_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_pex64_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_pex64_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_pex64_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_pex64_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_pex64i_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_pex64i_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_pex64i_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_pex64i_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_pex64i_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_pex64i_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_pex64i_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_pex64i_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_pex64i_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_pex64i_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_pex64i_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_pex64i_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_pex64i_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_pex64i_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_pex64i_slurp_codeview_record

#elif defined COFF_WITH_pep

#define GET_OPTHDR_IMAGE_BASE H_GET_64
#define PUT_OPTHDR_IMAGE_BASE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT H_PUT_64
#define GET_PDATA_ENTRY bfd_get_64

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_pep_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_pep_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_pep_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_pep_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_pep_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_pepi_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_pepi_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_pepi_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_pepi_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_pepi_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_pepi_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_pepi_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_pepi_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_pepi_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_pepi_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_pepi_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_pepi_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_pepi_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_pepi_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_pepi_slurp_codeview_record

#elif defined COFF_WITH_peAArch64

#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
#define GET_PDATA_ENTRY			 bfd_get_32

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peAArch64_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_peAArch64_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_peAArch64_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_peAArch64_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_peAArch64_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_peAArch64i_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_peAArch64i_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_peAArch64i_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_peAArch64i_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_peAArch64i_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_peAArch64i_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_peAArch64i_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_peAArch64i_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_peAArch64i_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_peAArch64i_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_peAArch64i_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_peAArch64i_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_peAArch64i_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_peAArch64i_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_peAArch64i_slurp_codeview_record

#elif defined COFF_WITH_peLoongArch64

#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
#define GET_PDATA_ENTRY			 bfd_get_32

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peLoongArch64_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_peLoongArch64_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_peLoongArch64_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_peLoongArch64_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_peLoongArch64_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_peLoongArch64i_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_peLoongArch64i_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_peLoongArch64i_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_peLoongArch64i_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_peLoongArch64i_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_peLoongArch64i_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_peLoongArch64i_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_peLoongArch64i_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_peLoongArch64i_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_peLoongArch64i_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_peLoongArch64i_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_peLoongArch64i_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_peLoongArch64i_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_peLoongArch64i_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_peLoongArch64i_slurp_codeview_record

#elif defined COFF_WITH_peRiscV64

#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
#define GET_PDATA_ENTRY			 bfd_get_32

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peRiscV64_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_peRiscV64_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_peRiscV64_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_peRiscV64_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_peRiscV64_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_peRiscV64i_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_peRiscV64i_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_peRiscV64i_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_peRiscV64i_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_peRiscV64i_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_peRiscV64i_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_peRiscV64i_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_peRiscV64i_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_peRiscV64i_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_peRiscV64i_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_peRiscV64i_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_peRiscV64i_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_peRiscV64i_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_peRiscV64i_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_peRiscV64i_slurp_codeview_record

#else /* !COFF_WITH_pep */

#define GET_OPTHDR_IMAGE_BASE H_GET_32
#define PUT_OPTHDR_IMAGE_BASE H_PUT_32
#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_32
#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_32
#define GET_OPTHDR_SIZE_OF_STACK_COMMIT H_GET_32
#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT H_PUT_32
#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE H_GET_32
#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE H_PUT_32
#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT H_GET_32
#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT H_PUT_32
#define GET_PDATA_ENTRY bfd_get_32

#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_pe_bfd_copy_private_bfd_data_common
#define _bfd_XX_bfd_copy_private_section_data		_bfd_pe_bfd_copy_private_section_data
#define _bfd_XX_get_symbol_info				_bfd_pe_get_symbol_info
#define _bfd_XX_only_swap_filehdr_out			_bfd_pe_only_swap_filehdr_out
#define _bfd_XX_print_private_bfd_data_common		_bfd_pe_print_private_bfd_data_common
#define _bfd_XXi_final_link_postscript			_bfd_pei_final_link_postscript
#define _bfd_XXi_only_swap_filehdr_out			_bfd_pei_only_swap_filehdr_out
#define _bfd_XXi_swap_aouthdr_in			_bfd_pei_swap_aouthdr_in
#define _bfd_XXi_swap_aouthdr_out			_bfd_pei_swap_aouthdr_out
#define _bfd_XXi_swap_aux_in				_bfd_pei_swap_aux_in
#define _bfd_XXi_swap_aux_out				_bfd_pei_swap_aux_out
#define _bfd_XXi_swap_lineno_in				_bfd_pei_swap_lineno_in
#define _bfd_XXi_swap_lineno_out			_bfd_pei_swap_lineno_out
#define _bfd_XXi_swap_scnhdr_out			_bfd_pei_swap_scnhdr_out
#define _bfd_XXi_swap_sym_in				_bfd_pei_swap_sym_in
#define _bfd_XXi_swap_sym_out				_bfd_pei_swap_sym_out
#define _bfd_XXi_swap_debugdir_in			_bfd_pei_swap_debugdir_in
#define _bfd_XXi_swap_debugdir_out			_bfd_pei_swap_debugdir_out
#define _bfd_XXi_write_codeview_record			_bfd_pei_write_codeview_record
#define _bfd_XXi_slurp_codeview_record			_bfd_pei_slurp_codeview_record

#endif /* !COFF_WITH_pep */

/* These functions are architecture dependent, and are in peicode.h:
   coff_swap_reloc_in
   int coff_swap_reloc_out
   coff_swap_filehdr_in
   coff_swap_scnhdr_in
   pe_mkobject
   pe_mkobject_hook  */

/* The functions described below are common across all PE/PEI
   implementations architecture types, and actually appear in
   peigen.c.  */

#define coff_swap_sym_in      _bfd_XXi_swap_sym_in
#define coff_swap_sym_out     _bfd_XXi_swap_sym_out
#define coff_swap_aux_in      _bfd_XXi_swap_aux_in
#define coff_swap_aux_out     _bfd_XXi_swap_aux_out
#define coff_swap_lineno_in   _bfd_XXi_swap_lineno_in
#define coff_swap_lineno_out  _bfd_XXi_swap_lineno_out
#define coff_swap_aouthdr_in  _bfd_XXi_swap_aouthdr_in
#define coff_swap_aouthdr_out _bfd_XXi_swap_aouthdr_out
#define coff_swap_scnhdr_out  _bfd_XXi_swap_scnhdr_out

#ifndef coff_final_link_postscript
#define coff_final_link_postscript _bfd_XXi_final_link_postscript
#endif

void _bfd_XXi_swap_sym_in (bfd *, void *, void *);
unsigned _bfd_XXi_swap_sym_out (bfd *, void *, void *);
void _bfd_XXi_swap_aux_in (bfd *, void *, int, int, int, int, void *);
unsigned _bfd_XXi_swap_aux_out (bfd *, void *, int, int, int, int, void *);
void _bfd_XXi_swap_lineno_in (bfd *, void *, void *);
unsigned _bfd_XXi_swap_lineno_out (bfd *, void *, void *);
void _bfd_XXi_swap_aouthdr_in (bfd *, void *, void *);
unsigned _bfd_XXi_swap_aouthdr_out (bfd *, void *, void *);
unsigned _bfd_XXi_swap_scnhdr_out (bfd *, void *, void *);
bool _bfd_XX_print_private_bfd_data_common (bfd *, void *);
bool _bfd_XX_bfd_copy_private_bfd_data_common (bfd *, bfd *);
void _bfd_XX_get_symbol_info (bfd *, asymbol *, symbol_info *);
bool _bfd_XXi_final_link_postscript (bfd *, struct coff_final_link_info *);
void _bfd_XXi_swap_debugdir_in (bfd *, void *, void *);
unsigned _bfd_XXi_swap_debugdir_out (bfd *, void *, void *);
unsigned _bfd_XXi_write_codeview_record
  (bfd *, file_ptr, CODEVIEW_INFO *, const char *);
CODEVIEW_INFO *_bfd_XXi_slurp_codeview_record
  (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo,
   char **pdb);

/* The following are needed only for ONE of pe or pei, but don't
   otherwise vary; peicode.h fixes up ifdefs but we provide the
   prototype.  */

unsigned _bfd_XX_only_swap_filehdr_out  (bfd *, void *, void *);
unsigned _bfd_XXi_only_swap_filehdr_out (bfd *, void *, void *);
bool _bfd_XX_bfd_copy_private_section_data
  (bfd *, asection *, bfd *, asection *);

bool _bfd_pe_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_pe64_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_pex64_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_peAArch64_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_peLoongArch64_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_peRiscV64_print_ce_compressed_pdata (bfd *, void *);
bool _bfd_pep_print_ce_compressed_pdata (bfd *, void *);

#endif /* _LIBPEI_H */
