binutils-gdb/include
Youling Tang 31f6009538 bfd: Add support for LoongArch64 EFI (efi-*-loongarch64).
This adds support for efi-loongarch64 by virtue of adding a new PEI target
pei-loongarch64.  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 loongarch64 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.

We should't limit addresses to 32-bits for 64-bit vma, otherwise there will be
"RVA truncated" error when using objcopy on loongarch64.

With these changes the resulting file is recognized as an efi image.

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

The test results are as follows:
$ make check-binutils RUNTESTFLAGS='loongarch64.exp'
  PASS: Check if efi app format is recognized

$ objdump -h -f tmpdir/loongarch64copy.o
  tmpdir/loongarch64copy.o:     file format pei-loongarch64
  architecture: Loongarch64, flags 0x00000132:
  EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED
  start address 0x0000000000000000

  Sections:
  Idx Name          Size      VMA               LMA               File off  Algn
    0 .text         0000003c  00000000200000b0  00000000200000b0  00000200  2**2
                    CONTENTS, ALLOC, LOAD, READONLY, CODE

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

bfd:
  * .gitignore (pe-loongarch64igen.c): New.
  * Makefile.am (pei-loongarch64.lo, pe-loongarch64igen.lo, pei-loongarch64.c,
  pe-loongarch64igen.c): Add support.
  * Makefile.in: Likewise.
  * bfd.c (bfd_get_sign_extend_vma): Add pei-loongarch64.
  * coff-loongarch64.c: New file.
  * coffcode.h (coff_set_arch_mach_hook, coff_set_flags,
  coff_write_object_contents) Add loongarch64 (loongarch64_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_peLoongArch64_bfd_copy_private_bfd_data_common,
  _bfd_peLoongArch64_bfd_copy_private_section_data,
  _bfd_peLoongArch64_get_symbol_info, _bfd_peLoongArch64_only_swap_filehdr_out,
  _bfd_peLoongArch64_print_private_bfd_data_common,
  _bfd_peLoongArch64i_final_link_postscript,
  _bfd_peLoongArch64i_only_swap_filehdr_out, _bfd_peLoongArch64i_swap_aouthdr_in,
  _bfd_peLoongArch64i_swap_aouthdr_out, _bfd_peLoongArch64i_swap_aux_in,
  _bfd_peLoongArch64i_swap_aux_out, _bfd_peLoongArch64i_swap_lineno_in,
  _bfd_peLoongArch64i_swap_lineno_out, _bfd_peLoongArch64i_swap_scnhdr_out,
  _bfd_peLoongArch64i_swap_sym_in, _bfd_peLoongArch64i_swap_sym_out,
  _bfd_peLoongArch64i_swap_debugdir_in, _bfd_peLoongArch64i_swap_debugdir_out,
  _bfd_peLoongArch64i_write_codeview_record,
  _bfd_peLoongArch64i_slurp_codeview_record,
  _bfd_peLoongArch64_print_ce_compressed_pdata): New.
  * peXXigen.c (_bfd_XXi_swap_aouthdr_in, _bfd_XXi_swap_aouthdr_out,
  _bfd_XXi_swap_scnhdr_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_peLoongArch64,
  * pei-loongarch64.c: New file.
  * peicode.h (coff_swap_scnhdr_in, pe_ILF_build_a_bfd, pe_ILF_object_p):
  Support COFF_WITH_peLoongArch64.
  (jtab): Add dummy entry that traps.
  * targets.c (loongarch64_pei_vec): New.

binutils
  * testsuite/binutils-all/loongarch64/loongarch64.exp: New file.
  * testsuite/binutils-all/loongarch64/pei-loongarch64.d: New test.
  * testsuite/binutils-all/loongarch64/pei-loongarch64.s: New test.

include
  * coff/loongarch64.h: New file.
  * coff/pe.h (IMAGE_FILE_MACHINE_LOONGARCH64): New.

Signed-off-by: Youling Tang <tangyouling@loongson.cn>
2022-08-10 09:26:25 +08:00
..
aout Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
cgen Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
coff bfd: Add support for LoongArch64 EFI (efi-*-loongarch64). 2022-08-10 09:26:25 +08:00
elf Add ELFCOMPRESS_ZSTD. 2022-08-02 16:19:43 -07:00
gdb Automatic Copyright Year update after running gdb/copyright.py 2022-01-01 19:13:23 +04:00
mach-o Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
opcode libopcodes/aarch64: add support for disassembler styling 2022-07-29 13:58:32 +01:00
sim Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
som Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
vms Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
alloca-conf.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
ansidecl.h Import libiberty from gcc 2022-05-31 21:14:00 +09:30
bfdlink.h Tidy warn-execstack handling 2022-05-20 16:11:25 +09:30
binary-io.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
bout.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
ChangeLog Add markers for 2.39 branch 2022-07-08 10:41:07 +01:00
ChangeLog-0415
ChangeLog-2016
ChangeLog-2017 ChangeLog rotation 2018-01-03 17:49:42 +10:30
ChangeLog-2018 ChangeLog rotation 2019-01-01 21:25:40 +10:30
ChangeLog-2019 ChangeLog rotation 2020-01-01 18:12:08 +10:30
ChangeLog-2020 ChangeLog rotation 2021-01-01 10:31:02 +10:30
ChangeLog-9103
collectorAPI.h gprofng: a new GNU profiler 2022-03-11 08:58:31 +00:00
COPYING
COPYING3
ctf-api.h libctf: add a comment explaining how to use ctf_*open 2022-04-28 11:47:11 +01:00
ctf.h include, libctf, ld: extend variable section to contain functions too 2022-03-23 13:48:32 +00:00
demangle.h Import libiberty from gcc 2022-05-31 21:14:00 +09:30
diagnostics.h [gdb/build] Fix build for gcc < 11 2022-06-15 09:03:03 +02:00
dis-asm.h opcodes: add new sub-mnemonic disassembler style 2022-07-25 14:02:30 +01:00
dwarf2.def gdb/fortran: support ptype and print commands for namelist variables 2022-02-11 15:26:25 +00:00
dwarf2.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
dyn-string.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
environ.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
fibheap.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
filenames.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
floatformat.h Import libiberty from gcc 2022-05-13 16:43:15 +09:30
fnmatch.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
fopen-bin.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
fopen-same.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
fopen-vms.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gcc-c-fe.def Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gcc-c-interface.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gcc-cp-fe.def Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gcc-cp-interface.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
gcc-interface.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
getopt.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
hashtab.h include: remove use of PTR 2022-05-10 11:21:37 +09:30
hp-symtab.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
leb128.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
libcollector.h gprofng: a new GNU profiler 2022-03-11 08:58:31 +00:00
libfcollector.h gprofng: a new GNU profiler 2022-03-11 08:58:31 +00:00
libiberty.h Synchronize binutils libiberty sources with gcc version. 2022-01-13 12:25:34 +00:00
longlong.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
lto-symtab.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
MAINTAINERS Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
md5.h Import libiberty from gcc 2022-05-13 16:43:15 +09:30
oasys.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
objalloc.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
obstack.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
os9k.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
partition.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
plugin-api.h LTO plugin: sync header file with GCC 2022-07-12 15:35:00 +02:00
progress.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
safe-ctype.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
sha1.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
simple-object.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
sort.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
splay-tree.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
symcat.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
timeval-utils.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
vtv-change-permission.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
xregex2.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
xregex.h
xtensa-config.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
xtensa-isa-internal.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30
xtensa-isa.h Update year range in copyright notice of binutils files 2022-01-02 12:04:28 +10:30