binutils-gdb/include
Tamar Christina b69c9d41e8 AArch64: Add support for AArch64 EFI (efi-*-aarch64).
This adds support for efi-*-aarch64 by virtue of adding a new PEI target
pei-aarch64-little.  This is not a full target and only exists to support EFI
at this time.

This means that this target does not support relocation processing and is mostly
a container format.  This format has been added to elf based aarch64 targets
such that efi images can be made natively on Linux.

However this target is not valid for use with gas but only with objcopy.

With these changes the resulting file is recognized as an efi image by
third party tools:

>  pecli info hello.efi

Metadata
================================================================================
MD5:            598c32a778b0f0deebe977fef8578c4e
SHA1:           4580121edd5cb4dc40f51b28f171fd15250df84c
SHA256:         3154bd7cf42433d1c957f6bf55a17ad8c57ed41b29df2d485703349fd6ff1d5c
Imphash:
Size:           47561 bytes
Type:           PE32+ executable (EFI application) (stripped to external PDB), for MS Windows
Compile Time:   1970-01-01 00:00:00 (UTC - 0x0       )
Entry point:    0x2000 (section .text)

Sections
================================================================================
Name      RWX  VirtSize   VirtAddr   RawAddr   RawSize   Entropy  md5
.text     R-X  0x5bb0     0x2000     0x400     0x5c00      6.39 551fbc264256a3f387de8a891500ae0d
.reloc    R--  0xc        0x8000     0x6000    0x200       0.02 0c45f6d812d079821c1d54c09ab89e1d
.data     RW-  0x1d88     0x9000     0x6200    0x1e00      4.18 5d1137c09f01289dc62bf754f7290db3
.dynamic  RW-  0xf0       0xb000     0x8000    0x200       0.34 5c94ed3206f05a277e6f04fbf131f131
.rela     R--  0xe58      0xc000     0x8200    0x1000      1.87 8b5c6bc30f3acb7ca7bf2e6789d68519
.dynsym   R--  0x138      0xd000     0x9200    0x200       0.96 bdcf5101da51aadc663ca8859f88138c

Imports
================================================================================

Any magic number is based on the Microsoft PE specification [1].

[1] https://docs.microsoft.com/en-us/windows/win32/debug/pe-format

bfd/ChangeLog:

2021-10-21  Tamar Christina  <tamar.christina@arm.com>

	PR binutils/26206
	* .gitignore (pe-aarch64igen.c): New.
	* Makefile.am (pei-aarch64.lo, pe-aarch64igen.lo, pei-aarch64.c,
	pe-aarch64igen.c): Add support.
	* Makefile.in: Likewise.
	* bfd.c (bfd_get_sign_extend_vma): Add pei-aarch64-little.
	* coff-aarch64.c: New file.
	* coffcode.h (coff_set_arch_mach_hook, coff_set_flags,
	coff_write_object_contents) Add aarch64 (aarch64_pei_vec) support.
	* config.bfd: Likewise.
	* configure: Likewise.
	* configure.ac: Likewise.
	* libpei.h (GET_OPTHDR_IMAGE_BASE, PUT_OPTHDR_IMAGE_BASE,
	GET_OPTHDR_SIZE_OF_STACK_RESERVE, PUT_OPTHDR_SIZE_OF_STACK_RESERVE,
	GET_OPTHDR_SIZE_OF_STACK_COMMIT, PUT_OPTHDR_SIZE_OF_STACK_COMMIT,
	GET_OPTHDR_SIZE_OF_HEAP_RESERVE, PUT_OPTHDR_SIZE_OF_HEAP_RESERVE,
	GET_OPTHDR_SIZE_OF_HEAP_COMMIT, PUT_OPTHDR_SIZE_OF_HEAP_COMMIT,
	GET_PDATA_ENTRY, _bfd_peAArch64_bfd_copy_private_bfd_data_common,
	_bfd_peAArch64_bfd_copy_private_section_data,
	_bfd_peAArch64_get_symbol_info, _bfd_peAArch64_only_swap_filehdr_out,
	_bfd_peAArch64_print_private_bfd_data_common,
	_bfd_peAArch64i_final_link_postscript,
	_bfd_peAArch64i_only_swap_filehdr_out, _bfd_peAArch64i_swap_aouthdr_in,
	_bfd_peAArch64i_swap_aouthdr_out, _bfd_peAArch64i_swap_aux_in,
	_bfd_peAArch64i_swap_aux_out, _bfd_peAArch64i_swap_lineno_in,
	_bfd_peAArch64i_swap_lineno_out, _bfd_peAArch64i_swap_scnhdr_out,
	_bfd_peAArch64i_swap_sym_in, _bfd_peAArch64i_swap_sym_out,
	_bfd_peAArch64i_swap_debugdir_in, _bfd_peAArch64i_swap_debugdir_out,
	_bfd_peAArch64i_write_codeview_record,
	_bfd_peAArch64i_slurp_codeview_record,
	_bfd_peAArch64_print_ce_compressed_pdata): New.
	* peXXigen.c (_bfd_XXi_swap_aouthdr_in, _bfd_XXi_swap_aouthdr_out,
	pe_print_pdata, _bfd_XX_print_private_bfd_data_common,
	_bfd_XX_bfd_copy_private_section_data, _bfd_XXi_final_link_postscript):
	Support COFF_WITH_peAArch64,
	* pei-aarch64.c: New file.
	* peicode.h (coff_swap_scnhdr_in, pe_ILF_build_a_bfd, pe_ILF_object_p):
	Support COFF_WITH_peAArch64.
	(jtab): Add dummy entry that traps.
	* targets.c (aarch64_pei_vec): New.

binutils/ChangeLog:

2021-10-21  Tamar Christina  <tamar.christina@arm.com>

	PR binutils/26206
	* NEWS: Add new support.
	* objcopy.c (convert_efi_target): Add efi-*-aarch64 support.
	* testsuite/binutils-all/aarch64/pei-aarch64-little.d: New test.
	* testsuite/binutils-all/aarch64/pei-aarch64-little.s: New test.

include/ChangeLog:

2021-10-21  Tamar Christina  <tamar.christina@arm.com>

	PR binutils/26206
	* coff/aarch64.h: New file.
	* coff/pe.h (IMAGE_FILE_MACHINE_ARM64): New.
2021-11-23 09:36:39 +00:00
..
aout Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
cgen Remove bfd_stdint.h 2021-03-31 10:49:23 +10:30
coff AArch64: Add support for AArch64 EFI (efi-*-aarch64). 2021-11-23 09:36:39 +00:00
elf RISC-V: Support STO_RISCV_VARIANT_CC and DT_RISCV_VARIANT_CC. 2021-11-19 09:32:19 +08:00
gdb sim: create header namespace 2021-05-14 00:41:05 -04:00
mach-o Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
opcode RISC-V: Add instructions and operand set for z[fdq]inx 2021-11-18 14:43:23 +08:00
sim sim: callback: expose argv & environ 2021-11-16 01:13:39 -05:00
som Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
vms Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
alloca-conf.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
ansidecl.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
bfdlink.h elf: Add GNU_PROPERTY_1_NEEDED check 2021-07-08 18:14:31 -07:00
binary-io.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
bout.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
ChangeLog readelf: Support SHT_RELR/DT_RELR for -r 2021-11-16 13:04:33 -08:00
ChangeLog-0415
ChangeLog-2016
ChangeLog-2017
ChangeLog-2018
ChangeLog-2019
ChangeLog-2020 ChangeLog rotation 2021-01-01 10:31:02 +10:30
ChangeLog-9103
COPYING
COPYING3
ctf-api.h libctf, include: support an alternative encoding for nonrepresentable types 2021-05-06 09:30:59 +01:00
ctf.h libctf, include: support an alternative encoding for nonrepresentable types 2021-05-06 09:30:59 +01:00
demangle.h Synchronize libiberty sources (and include/demangle.h) with GCC master version 2021-07-03 14:00:33 +01:00
diagnostics.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
dis-asm.h LoongArch opcodes support 2021-10-24 21:36:31 +10:30
dwarf2.def Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
dwarf2.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
dyn-string.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
environ.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
fibheap.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
filenames.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
floatformat.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
fnmatch.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
fopen-bin.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
fopen-same.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
fopen-vms.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gcc-c-fe.def Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gcc-c-interface.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gcc-cp-fe.def Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gcc-cp-interface.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
gcc-interface.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
getopt.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
hashtab.h libiberty: add htab_eq_string 2021-05-07 11:17:11 +01:00
hp-symtab.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
leb128.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
libiberty.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
longlong.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
lto-symtab.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
MAINTAINERS Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
md5.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
oasys.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
objalloc.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
obstack.h obstack.h __PTR_ALIGN vs. ubsan 2021-09-02 13:48:21 +09:30
os9k.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
partition.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
plugin-api.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
progress.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
safe-ctype.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
sha1.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
simple-object.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
sort.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
splay-tree.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
symcat.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
timeval-utils.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
vtv-change-permission.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
xregex2.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
xregex.h
xtensa-config.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
xtensa-isa-internal.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30
xtensa-isa.h Update year range in copyright notice of binutils files 2021-01-01 10:31:05 +10:30