projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LoongArch: Fix LD check fails.
[binutils-gdb.git]
/
bfd
/
peicode.h
diff --git
a/bfd/peicode.h
b/bfd/peicode.h
index 4fcbac6704061986da0c5b6f3eb6948b8edba051..0346bc2174ec37d31b1872a7a1e7ee864700d71f 100644
(file)
--- a/
bfd/peicode.h
+++ b/
bfd/peicode.h
@@
-1,5
+1,5
@@
/* Support for the generic parts of PE/PEI, for BFD.
/* Support for the generic parts of PE/PEI, for BFD.
- Copyright (C) 1995-202
1
Free Software Foundation, Inc.
+ Copyright (C) 1995-202
2
Free Software Foundation, Inc.
Written by Cygnus Solutions.
This file is part of BFD, the Binary File Descriptor library.
Written by Cygnus Solutions.
This file is part of BFD, the Binary File Descriptor library.
@@
-56,7
+56,7
@@
#include "libpei.h"
#include "libpei.h"
-static b
fd_boolean
(*pe_saved_coff_bfd_print_private_bfd_data) (bfd *, void *) =
+static b
ool
(*pe_saved_coff_bfd_print_private_bfd_data) (bfd *, void *) =
#ifndef coff_bfd_print_private_bfd_data
NULL;
#else
#ifndef coff_bfd_print_private_bfd_data
NULL;
#else
@@
-64,10
+64,10
@@
static bfd_boolean (*pe_saved_coff_bfd_print_private_bfd_data) (bfd *, void *) =
#undef coff_bfd_print_private_bfd_data
#endif
#undef coff_bfd_print_private_bfd_data
#endif
-static b
fd_boolean
pe_print_private_bfd_data (bfd *, void *);
+static b
ool
pe_print_private_bfd_data (bfd *, void *);
#define coff_bfd_print_private_bfd_data pe_print_private_bfd_data
#define coff_bfd_print_private_bfd_data pe_print_private_bfd_data
-static b
fd_boolean
(*pe_saved_coff_bfd_copy_private_bfd_data) (bfd *, bfd *) =
+static b
ool
(*pe_saved_coff_bfd_copy_private_bfd_data) (bfd *, bfd *) =
#ifndef coff_bfd_copy_private_bfd_data
NULL;
#else
#ifndef coff_bfd_copy_private_bfd_data
NULL;
#else
@@
-75,7
+75,7
@@
static bfd_boolean (*pe_saved_coff_bfd_copy_private_bfd_data) (bfd *, bfd *) =
#undef coff_bfd_copy_private_bfd_data
#endif
#undef coff_bfd_copy_private_bfd_data
#endif
-static b
fd_boolean
pe_bfd_copy_private_bfd_data (bfd *, bfd *);
+static b
ool
pe_bfd_copy_private_bfd_data (bfd *, bfd *);
#define coff_bfd_copy_private_bfd_data pe_bfd_copy_private_bfd_data
#define coff_mkobject pe_mkobject
#define coff_bfd_copy_private_bfd_data pe_bfd_copy_private_bfd_data
#define coff_mkobject pe_mkobject
@@
-231,7
+231,7
@@
coff_swap_scnhdr_in (bfd * abfd, void * ext, void * in)
{
scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
/* Do not cut upper 32-bits for 64-bit vma. */
{
scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
/* Do not cut upper 32-bits for 64-bit vma. */
-#if
ndef COFF_WITH_pex64
+#if
!defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64)
scnhdr_int->s_vaddr &= 0xffffffff;
#endif
}
scnhdr_int->s_vaddr &= 0xffffffff;
#endif
}
@@
-253,7
+253,7
@@
coff_swap_scnhdr_in (bfd * abfd, void * ext, void * in)
#endif
}
#endif
}
-static b
fd_boolean
+static b
ool
pe_mkobject (bfd * abfd)
{
pe_data_type *pe;
pe_mkobject (bfd * abfd)
{
pe_data_type *pe;
@@
-262,7
+262,7
@@
pe_mkobject (bfd * abfd)
abfd->tdata.pe_obj_data = (struct pe_tdata *) bfd_zalloc (abfd, amt);
if (abfd->tdata.pe_obj_data == 0)
abfd->tdata.pe_obj_data = (struct pe_tdata *) bfd_zalloc (abfd, amt);
if (abfd->tdata.pe_obj_data == 0)
- return
FALSE
;
+ return
false
;
pe = pe_data (abfd);
pe = pe_data (abfd);
@@
-290,7
+290,7
@@
pe_mkobject (bfd * abfd)
pe->dos_message[15] = 0x0;
memset (& pe->pe_opthdr, 0, sizeof pe->pe_opthdr);
pe->dos_message[15] = 0x0;
memset (& pe->pe_opthdr, 0, sizeof pe->pe_opthdr);
- return
TRUE
;
+ return
true
;
}
/* Create the COFF backend specific information. */
}
/* Create the COFF backend specific information. */
@@
-349,16
+349,16
@@
pe_mkobject_hook (bfd * abfd,
return (void *) pe;
}
return (void *) pe;
}
-static b
fd_boolean
+static b
ool
pe_print_private_bfd_data (bfd *abfd, void * vfile)
{
FILE *file = (FILE *) vfile;
if (!_bfd_XX_print_private_bfd_data_common (abfd, vfile))
pe_print_private_bfd_data (bfd *abfd, void * vfile)
{
FILE *file = (FILE *) vfile;
if (!_bfd_XX_print_private_bfd_data_common (abfd, vfile))
- return
FALSE
;
+ return
false
;
if (pe_saved_coff_bfd_print_private_bfd_data == NULL)
if (pe_saved_coff_bfd_print_private_bfd_data == NULL)
- return
TRUE
;
+ return
true
;
fputc ('\n', file);
fputc ('\n', file);
@@
-368,7
+368,7
@@
pe_print_private_bfd_data (bfd *abfd, void * vfile)
/* Copy any private info we understand from the input bfd
to the output bfd. */
/* Copy any private info we understand from the input bfd
to the output bfd. */
-static b
fd_boolean
+static b
ool
pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
{
/* PR binutils/716: Copy the large address aware flag.
pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
{
/* PR binutils/716: Copy the large address aware flag.
@@
-380,12
+380,12
@@
pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
pe_data (obfd)->real_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
if (!_bfd_XX_bfd_copy_private_bfd_data_common (ibfd, obfd))
pe_data (obfd)->real_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
if (!_bfd_XX_bfd_copy_private_bfd_data_common (ibfd, obfd))
- return
FALSE
;
+ return
false
;
if (pe_saved_coff_bfd_copy_private_bfd_data)
return pe_saved_coff_bfd_copy_private_bfd_data (ibfd, obfd);
if (pe_saved_coff_bfd_copy_private_bfd_data)
return pe_saved_coff_bfd_copy_private_bfd_data (ibfd, obfd);
- return
TRUE
;
+ return
true
;
}
#define coff_bfd_copy_private_section_data \
}
#define coff_bfd_copy_private_section_data \
@@
-489,7
+489,7
@@
pe_ILF_make_a_symbol_reloc (pe_ILF_vars * vars,
internal->r_vaddr = address;
internal->r_symndx = sym_index;
internal->r_vaddr = address;
internal->r_symndx = sym_index;
- internal->r_type = entry->howto
->type
;
+ internal->r_type = entry->howto
? entry->howto->type : 0
;
vars->relcount ++;
vars->relcount ++;
@@
-520,7
+520,7
@@
pe_ILF_save_relocs (pe_ILF_vars * vars,
abort ();
coff_section_data (vars->abfd, sec)->relocs = vars->int_reltab;
abort ();
coff_section_data (vars->abfd, sec)->relocs = vars->int_reltab;
- coff_section_data (vars->abfd, sec)->keep_relocs =
TRUE
;
+ coff_section_data (vars->abfd, sec)->keep_relocs =
true
;
sec->relocation = vars->reltab;
sec->reloc_count = vars->relcount;
sec->relocation = vars->reltab;
sec->reloc_count = vars->relcount;
@@
-589,7
+589,7
@@
pe_ILF_make_a_symbol (pe_ILF_vars * vars,
ent->u.syment.n_sclass = sclass;
ent->u.syment.n_scnum = section->target_index;
ent->u.syment._n._n_n._n_offset = (bfd_hostptr_t) sym;
ent->u.syment.n_sclass = sclass;
ent->u.syment.n_scnum = section->target_index;
ent->u.syment._n._n_n._n_offset = (bfd_hostptr_t) sym;
- ent->is_sym =
TRUE
;
+ ent->is_sym =
true
;
sym->symbol.the_bfd = vars->abfd;
sym->symbol.name = vars->string_ptr;
sym->symbol.the_bfd = vars->abfd;
sym->symbol.name = vars->string_ptr;
@@
-738,6
+738,16
@@
static const jump_table jtab[] =
},
#endif
},
#endif
+#ifdef AARCH64MAGIC
+/* We don't currently support jumping to DLLs, so if
+ someone does try emit a runtime trap. Through UDF #0. */
+ { AARCH64MAGIC,
+ { 0x00, 0x00, 0x00, 0x00 },
+ 4, 0
+ },
+
+#endif
+
#ifdef ARMPEMAGIC
{ ARMPEMAGIC,
{ 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0,
#ifdef ARMPEMAGIC
{ ARMPEMAGIC,
{ 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0,
@@
-762,7
+772,7
@@
static const jump_table jtab[] =
/* Build a full BFD from the information supplied in a ILF object. */
/* Build a full BFD from the information supplied in a ILF object. */
-static b
fd_boolean
+static b
ool
pe_ILF_build_a_bfd (bfd * abfd,
unsigned int magic,
char * symbol_name,
pe_ILF_build_a_bfd (bfd * abfd,
unsigned int magic,
char * symbol_name,
@@
-795,13
+805,13
@@
pe_ILF_build_a_bfd (bfd * abfd,
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unhandled import type; %x"),
abfd, import_type);
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unhandled import type; %x"),
abfd, import_type);
- return
FALSE
;
+ return
false
;
default:
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unrecognized import type; %x"),
abfd, import_type);
default:
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unrecognized import type; %x"),
abfd, import_type);
- return
FALSE
;
+ return
false
;
}
switch (import_name_type)
}
switch (import_name_type)
@@
-816,7
+826,7
@@
pe_ILF_build_a_bfd (bfd * abfd,
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unrecognized import name type; %x"),
abfd, import_name_type);
/* xgettext:c-format */
_bfd_error_handler (_("%pB: unrecognized import name type; %x"),
abfd, import_name_type);
- return
FALSE
;
+ return
false
;
}
/* Initialise local variables.
}
/* Initialise local variables.
@@
-829,7
+839,7
@@
pe_ILF_build_a_bfd (bfd * abfd,
vars.bim
= (struct bfd_in_memory *) bfd_malloc ((bfd_size_type) sizeof (*vars.bim));
if (vars.bim == NULL)
vars.bim
= (struct bfd_in_memory *) bfd_malloc ((bfd_size_type) sizeof (*vars.bim));
if (vars.bim == NULL)
- return
FALSE
;
+ return
false
;
ptr = (bfd_byte *) bfd_zmalloc ((bfd_size_type) ILF_DATA_SIZE);
vars.bim->buffer = ptr;
ptr = (bfd_byte *) bfd_zmalloc ((bfd_size_type) ILF_DATA_SIZE);
vars.bim->buffer = ptr;
@@
-910,7
+920,7
@@
pe_ILF_build_a_bfd (bfd * abfd,
/* See PR 20907 for a reproducer. */
goto error_return;
/* See PR 20907 for a reproducer. */
goto error_return;
-#if
def COFF_WITH_pex64
+#if
defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
((unsigned int *) id4->contents)[0] = ordinal;
((unsigned int *) id4->contents)[1] = 0x80000000;
((unsigned int *) id5->contents)[0] = ordinal;
((unsigned int *) id4->contents)[0] = ordinal;
((unsigned int *) id4->contents)[1] = 0x80000000;
((unsigned int *) id5->contents)[0] = ordinal;
@@
-1114,22
+1124,22
@@
pe_ILF_build_a_bfd (bfd * abfd,
obj_raw_syment_count (abfd) = vars.sym_index;
obj_coff_external_syms (abfd) = (void *) vars.esym_table;
obj_raw_syment_count (abfd) = vars.sym_index;
obj_coff_external_syms (abfd) = (void *) vars.esym_table;
- obj_coff_keep_syms (abfd) =
TRUE
;
+ obj_coff_keep_syms (abfd) =
true
;
obj_convert (abfd) = vars.sym_table;
obj_conv_table_size (abfd) = vars.sym_index;
obj_coff_strings (abfd) = vars.string_table;
obj_convert (abfd) = vars.sym_table;
obj_conv_table_size (abfd) = vars.sym_index;
obj_coff_strings (abfd) = vars.string_table;
- obj_coff_keep_strings (abfd) =
TRUE
;
+ obj_coff_keep_strings (abfd) =
true
;
abfd->flags |= HAS_SYMS;
abfd->flags |= HAS_SYMS;
- return
TRUE
;
+ return
true
;
error_return:
free (vars.bim->buffer);
free (vars.bim);
error_return:
free (vars.bim->buffer);
free (vars.bim);
- return
FALSE
;
+ return
false
;
}
/* We have detected a Image Library Format archive element.
}
/* We have detected a Image Library Format archive element.
@@
-1206,6
+1216,12
@@
pe_ILF_object_p (bfd * abfd)
#endif
break;
#endif
break;
+ case IMAGE_FILE_MACHINE_ARM64:
+#ifdef AARCH64MAGIC
+ magic = AARCH64MAGIC;
+#endif
+ break;
+
case IMAGE_FILE_MACHINE_THUMB:
#ifdef THUMBPEMAGIC
{
case IMAGE_FILE_MACHINE_THUMB:
#ifdef THUMBPEMAGIC
{
@@
-1474,7
+1490,7
@@
pe_bfd_object_p (bfd * abfd)
if (opt_hdr_size != 0)
{
bfd_size_type amt = opt_hdr_size;
if (opt_hdr_size != 0)
{
bfd_size_type amt = opt_hdr_size;
-
void
* opthdr;
+
bfd_byte
* opthdr;
/* PR 17521 file: 230-131433-0.004. */
if (amt < sizeof (PEAOUTHDR))
/* PR 17521 file: 230-131433-0.004. */
if (amt < sizeof (PEAOUTHDR))