projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Disable parts of gdb.base/source-dir.exp on remote host
[deliverable/binutils-gdb.git]
/
bfd
/
coff64-rs6000.c
diff --git
a/bfd/coff64-rs6000.c
b/bfd/coff64-rs6000.c
index 1c80a9df8851c39c3a1459320d299f11c9e4fca2..7185232ce14b6d140354cdf095efb0a8b0b9cd02 100644
(file)
--- a/
bfd/coff64-rs6000.c
+++ b/
bfd/coff64-rs6000.c
@@
-1,5
+1,5
@@
/* BFD back-end for IBM RS/6000 "XCOFF64" files.
/* BFD back-end for IBM RS/6000 "XCOFF64" files.
- Copyright (C) 2000-20
19
Free Software Foundation, Inc.
+ Copyright (C) 2000-20
20
Free Software Foundation, Inc.
Written Clinton Popetz.
Contributed by Cygnus Support.
Written Clinton Popetz.
Contributed by Cygnus Support.
@@
-155,7
+155,7
@@
static bfd_boolean xcoff64_ppc_relocate_section
asection **);
static bfd_boolean xcoff64_slurp_armap
(bfd *);
asection **);
static bfd_boolean xcoff64_slurp_armap
(bfd *);
-static
const bfd_target *
xcoff64_archive_p
+static
bfd_cleanup
xcoff64_archive_p
(bfd *);
static bfd *xcoff64_openr_next_archived_file
(bfd *, bfd *);
(bfd *);
static bfd *xcoff64_openr_next_archived_file
(bfd *, bfd *);
@@
-238,7
+238,7
@@
bfd_boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
#define coff_bfd_reloc_type_lookup xcoff64_reloc_type_lookup
#define coff_bfd_reloc_name_lookup xcoff64_reloc_name_lookup
#ifdef AIX_CORE
#define coff_bfd_reloc_type_lookup xcoff64_reloc_type_lookup
#define coff_bfd_reloc_name_lookup xcoff64_reloc_name_lookup
#ifdef AIX_CORE
-extern
const bfd_target *
rs6000coff_core_p
+extern
bfd_cleanup
rs6000coff_core_p
(bfd *abfd);
extern bfd_boolean rs6000coff_core_file_matches_executable_p
(bfd *cbfd, bfd *ebfd);
(bfd *abfd);
extern bfd_boolean rs6000coff_core_file_matches_executable_p
(bfd *cbfd, bfd *ebfd);
@@
-959,7
+959,7
@@
xcoff64_write_object_contents (bfd *abfd)
if (text_sec != NULL)
{
internal_a.o_sntext = text_sec->target_index;
if (text_sec != NULL)
{
internal_a.o_sntext = text_sec->target_index;
- internal_a.o_algntext = bfd_
get_section_alignment (abfd,
text_sec);
+ internal_a.o_algntext = bfd_
section_alignment (
text_sec);
}
else
{
}
else
{
@@
-970,7
+970,7
@@
xcoff64_write_object_contents (bfd *abfd)
if (data_sec != NULL)
{
internal_a.o_sndata = data_sec->target_index;
if (data_sec != NULL)
{
internal_a.o_sndata = data_sec->target_index;
- internal_a.o_algndata = bfd_
get_section_alignment (abfd,
data_sec);
+ internal_a.o_algndata = bfd_
section_alignment (
data_sec);
}
else
{
}
else
{
@@
-1249,10
+1249,11
@@
xcoff64_ppc_relocate_section (bfd *output_bfd,
{
if (info->unresolved_syms_in_objects != RM_IGNORE
&& (h->flags & XCOFF_WAS_UNDEFINED) != 0)
{
if (info->unresolved_syms_in_objects != RM_IGNORE
&& (h->flags & XCOFF_WAS_UNDEFINED) != 0)
- (*info->callbacks->undefined_symbol)
+ info->callbacks->undefined_symbol
(info, h->root.root.string, input_bfd, input_section,
rel->r_vaddr - input_section->vma,
(info, h->root.root.string, input_bfd, input_section,
rel->r_vaddr - input_section->vma,
- info->unresolved_syms_in_objects == RM_GENERATE_ERROR);
+ info->unresolved_syms_in_objects == RM_DIAGNOSE
+ && !info->warn_unresolved_syms);
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
if (h->root.type == bfd_link_hash_defined
|| h->root.type == bfd_link_hash_defweak)
@@
-1933,18
+1934,25
@@
xcoff64_slurp_armap (bfd *abfd)
return FALSE;
sz = bfd_scan_vma (hdr.size, (const char **) NULL, 10);
return FALSE;
sz = bfd_scan_vma (hdr.size, (const char **) NULL, 10);
+ if (sz + 1 < 9)
+ {
+ bfd_set_error (bfd_error_bad_value);
+ return FALSE;
+ }
/* Read in the entire symbol table. */
/* Read in the entire symbol table. */
- contents = (bfd_byte *)
bfd_alloc (abfd
, sz);
+ contents = (bfd_byte *)
_bfd_alloc_and_read (abfd, sz + 1
, sz);
if (contents == NULL)
return FALSE;
if (contents == NULL)
return FALSE;
- if (bfd_bread (contents, sz, abfd) != sz)
- return FALSE;
+
+ /* Ensure strings are NULL terminated so we don't wander off the end
+ of the buffer. */
+ contents[sz] = 0;
/* The symbol table starts with an eight byte count. */
c = H_GET_64 (abfd, contents);
/* The symbol table starts with an eight byte count. */
c = H_GET_64 (abfd, contents);
- if (c
* 8 >= sz
)
+ if (c
>= sz / 8
)
{
bfd_set_error (bfd_error_bad_value);
return FALSE;
{
bfd_set_error (bfd_error_bad_value);
return FALSE;
@@
-1984,14
+1992,14
@@
xcoff64_slurp_armap (bfd *abfd)
/* See if this is an NEW XCOFF archive. */
/* See if this is an NEW XCOFF archive. */
-static
const bfd_target *
+static
bfd_cleanup
xcoff64_archive_p (bfd *abfd)
{
struct artdata *tdata_hold;
char magic[SXCOFFARMAG];
/* This is the new format. */
struct xcoff_ar_file_hdr_big hdr;
xcoff64_archive_p (bfd *abfd)
{
struct artdata *tdata_hold;
char magic[SXCOFFARMAG];
/* This is the new format. */
struct xcoff_ar_file_hdr_big hdr;
-
bfd_size_type
amt = SXCOFFARMAG;
+
size_t
amt = SXCOFFARMAG;
if (bfd_bread (magic, amt, abfd) != amt)
{
if (bfd_bread (magic, amt, abfd) != amt)
{
@@
-2051,7
+2059,7
@@
xcoff64_archive_p (bfd *abfd)
return NULL;
}
return NULL;
}
- return
abfd->xvec
;
+ return
_bfd_no_cleanup
;
}
}
@@
-2798,7
+2806,7
@@
const bfd_target rs6000_xcoff64_vec =
&bfd_xcoff_backend_data,
};
&bfd_xcoff_backend_data,
};
-extern
const bfd_target *
xcoff64_core_p
+extern
bfd_cleanup
xcoff64_core_p
(bfd *);
extern bfd_boolean xcoff64_core_file_matches_executable_p
(bfd *, bfd *);
(bfd *);
extern bfd_boolean xcoff64_core_file_matches_executable_p
(bfd *, bfd *);
This page took
0.02478 seconds
and
4
git commands to generate.