projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PR25172, Wrong description of --stop-address=ADDR switch
[deliverable/binutils-gdb.git]
/
bfd
/
coffcode.h
diff --git
a/bfd/coffcode.h
b/bfd/coffcode.h
index c63ebd2dbb8b726a2f96f8522a05a0a80d60a03e..948bb705b0945ff749383a1ee7ffc55bb4221f81 100644
(file)
--- a/
bfd/coffcode.h
+++ b/
bfd/coffcode.h
@@
-1,5
+1,5
@@
/* Support for the generic parts of most COFF variants, for BFD.
/* Support for the generic parts of most COFF variants, for BFD.
- Copyright (C) 1990-201
8
Free Software Foundation, Inc.
+ Copyright (C) 1990-201
9
Free Software Foundation, Inc.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@
-423,8
+423,6
@@
static bfd_boolean coff_write_object_contents
(bfd *) ATTRIBUTE_UNUSED;
static bfd_boolean coff_set_section_contents
(bfd *, asection *, const void *, file_ptr, bfd_size_type);
(bfd *) ATTRIBUTE_UNUSED;
static bfd_boolean coff_set_section_contents
(bfd *, asection *, const void *, file_ptr, bfd_size_type);
-static void * buy_and_read
- (bfd *, file_ptr, bfd_size_type);
static bfd_boolean coff_slurp_line_table
(bfd *, asection *);
static bfd_boolean coff_slurp_symbol_table
static bfd_boolean coff_slurp_line_table
(bfd *, asection *);
static bfd_boolean coff_slurp_symbol_table
@@
-1176,6
+1174,11
@@
styp_to_sec_flags (bfd *abfd,
#ifdef COFF_LONG_SECTION_NAMES
|| CONST_STRNEQ (name, GNU_LINKONCE_WI)
|| CONST_STRNEQ (name, GNU_LINKONCE_WT)
#ifdef COFF_LONG_SECTION_NAMES
|| CONST_STRNEQ (name, GNU_LINKONCE_WI)
|| CONST_STRNEQ (name, GNU_LINKONCE_WT)
+ /* FIXME: These definitions ought to be in a header file. */
+#define GNU_DEBUGLINK ".gnu_debuglink"
+#define GNU_DEBUGALTLINK ".gnu_debugaltlink"
+ || CONST_STRNEQ (name, GNU_DEBUGLINK)
+ || CONST_STRNEQ (name, GNU_DEBUGALTLINK)
#endif
|| CONST_STRNEQ (name, ".stab"))
is_dbg = TRUE;
#endif
|| CONST_STRNEQ (name, ".stab"))
is_dbg = TRUE;
@@
-1693,7
+1696,7
@@
coff_set_custom_section_alignment (bfd *abfd ATTRIBUTE_UNUSED,
for (i = 0; i < table_size; ++i)
{
for (i = 0; i < table_size; ++i)
{
- const char *secname = bfd_
get_section_name (abfd,
section);
+ const char *secname = bfd_
section_name (
section);
if (alignment_table[i].comparison_length == (unsigned int) -1
? strcmp (alignment_table[i].name, secname) == 0
if (alignment_table[i].comparison_length == (unsigned int) -1
? strcmp (alignment_table[i].name, secname) == 0
@@
-1756,17
+1759,17
@@
coff_new_section_hook (bfd * abfd, asection * section)
#ifdef RS6000COFF_C
if (bfd_xcoff_text_align_power (abfd) != 0
#ifdef RS6000COFF_C
if (bfd_xcoff_text_align_power (abfd) != 0
- && strcmp (bfd_
get_section_name (abfd,
section), ".text") == 0)
+ && strcmp (bfd_
section_name (
section), ".text") == 0)
section->alignment_power = bfd_xcoff_text_align_power (abfd);
else if (bfd_xcoff_data_align_power (abfd) != 0
section->alignment_power = bfd_xcoff_text_align_power (abfd);
else if (bfd_xcoff_data_align_power (abfd) != 0
- && strcmp (bfd_
get_section_name (abfd,
section), ".data") == 0)
+ && strcmp (bfd_
section_name (
section), ".data") == 0)
section->alignment_power = bfd_xcoff_data_align_power (abfd);
else
{
int i;
for (i = 0; i < XCOFF_DWSECT_NBR_NAMES; i++)
section->alignment_power = bfd_xcoff_data_align_power (abfd);
else
{
int i;
for (i = 0; i < XCOFF_DWSECT_NBR_NAMES; i++)
- if (strcmp (bfd_
get_section_name (abfd,
section),
+ if (strcmp (bfd_
section_name (
section),
xcoff_dwsect_names[i].name) == 0)
{
section->alignment_power = 0;
xcoff_dwsect_names[i].name) == 0)
{
section->alignment_power = 0;
@@
-2104,11
+2107,19
@@
coff_set_arch_mach_hook (bfd *abfd, void * filehdr)
case I386PTXMAGIC:
case I386AIXMAGIC: /* Danbury PS/2 AIX C Compiler. */
case LYNXCOFFMAGIC:
case I386PTXMAGIC:
case I386AIXMAGIC: /* Danbury PS/2 AIX C Compiler. */
case LYNXCOFFMAGIC:
+ case I386_APPLE_MAGIC:
+ case I386_FREEBSD_MAGIC:
+ case I386_LINUX_MAGIC:
+ case I386_NETBSD_MAGIC:
arch = bfd_arch_i386;
break;
#endif
#ifdef AMD64MAGIC
case AMD64MAGIC:
arch = bfd_arch_i386;
break;
#endif
#ifdef AMD64MAGIC
case AMD64MAGIC:
+ case AMD64_APPLE_MAGIC:
+ case AMD64_FREEBSD_MAGIC:
+ case AMD64_LINUX_MAGIC:
+ case AMD64_NETBSD_MAGIC:
arch = bfd_arch_i386;
machine = bfd_mach_x86_64;
break;
arch = bfd_arch_i386;
machine = bfd_mach_x86_64;
break;
@@
-3210,7
+3221,7
@@
coff_compute_section_file_positions (bfd * abfd)
incremented in coff_set_section_contents. This is right for
SVR3.2. */
if (strcmp (current->name, _LIB) == 0)
incremented in coff_set_section_contents. This is right for
SVR3.2. */
if (strcmp (current->name, _LIB) == 0)
-
(void) bfd_set_section_vma (abfd,
current, 0);
+
bfd_set_section_vma (
current, 0);
#endif
#ifdef ALIGN_SECTIONS_IN_FILE
#endif
#ifdef ALIGN_SECTIONS_IN_FILE
@@
-4000,7
+4011,7
@@
coff_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
{
@@
-4010,7
+4021,7
@@
coff_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
{
@@
-4197,12
+4208,14
@@
coff_set_section_contents (bfd * abfd,
}
static void *
}
static void *
-buy_and_read (bfd *abfd, file_ptr where, bfd_size_type size)
+buy_and_read (bfd *abfd, file_ptr where,
+ bfd_size_type nmemb, bfd_size_type size)
{
{
- void *
area = bfd_alloc (abfd
, size);
+ void *
area = bfd_alloc2 (abfd, nmemb
, size);
if (!area)
return NULL;
if (!area)
return NULL;
+ size *= nmemb;
if (bfd_seek (abfd, where, SEEK_SET) != 0
|| bfd_bread (area, size, abfd) != size)
return NULL;
if (bfd_seek (abfd, where, SEEK_SET) != 0
|| bfd_bread (area, size, abfd) != size)
return NULL;
@@
-4255,7
+4268,6
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
{
LINENO *native_lineno;
alent *lineno_cache;
{
LINENO *native_lineno;
alent *lineno_cache;
- bfd_size_type amt;
unsigned int counter;
alent *cache_ptr;
bfd_vma prev_offset = 0;
unsigned int counter;
alent *cache_ptr;
bfd_vma prev_offset = 0;
@@
-4265,6
+4277,9
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
bfd_boolean have_func;
bfd_boolean ret = TRUE;
bfd_boolean have_func;
bfd_boolean ret = TRUE;
+ if (asect->lineno_count == 0)
+ return TRUE;
+
BFD_ASSERT (asect->lineno == NULL);
if (asect->lineno_count > asect->size)
BFD_ASSERT (asect->lineno == NULL);
if (asect->lineno_count > asect->size)
@@
-4275,13
+4290,15
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
return FALSE;
}
return FALSE;
}
- amt = ((bfd_size_type) asect->lineno_count + 1) * sizeof (alent);
- lineno_cache = (alent *) bfd_alloc (abfd, amt);
+ lineno_cache = (alent *) bfd_alloc2 (abfd,
+ (bfd_size_type) asect->lineno_count + 1,
+ sizeof (alent));
if (lineno_cache == NULL)
return FALSE;
if (lineno_cache == NULL)
return FALSE;
- amt = (bfd_size_type) bfd_coff_linesz (abfd) * asect->lineno_count;
- native_lineno = (LINENO *) buy_and_read (abfd, asect->line_filepos, amt);
+ native_lineno = (LINENO *) buy_and_read (abfd, asect->line_filepos,
+ asect->lineno_count,
+ bfd_coff_linesz (abfd));
if (native_lineno == NULL)
{
_bfd_error_handler
if (native_lineno == NULL)
{
_bfd_error_handler
@@
-4373,8
+4390,7
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
PR 17521: file: 078-10659-0.004. */
continue;
else
PR 17521: file: 078-10659-0.004. */
continue;
else
- cache_ptr->u.offset = (dst.l_addr.l_paddr
- - bfd_section_vma (abfd, asect));
+ cache_ptr->u.offset = dst.l_addr.l_paddr - bfd_section_vma (asect);
cache_ptr++;
}
cache_ptr++;
}
@@
-4390,7
+4406,7
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
alent *n_lineno_cache;
/* Create a table of functions. */
alent *n_lineno_cache;
/* Create a table of functions. */
- func_table = (alent **) bfd_alloc
(abfd, nbr_func *
sizeof (alent *));
+ func_table = (alent **) bfd_alloc
2 (abfd, nbr_func,
sizeof (alent *));
if (func_table != NULL)
{
alent **p = func_table;
if (func_table != NULL)
{
alent **p = func_table;
@@
-4406,8
+4422,8
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
qsort (func_table, nbr_func, sizeof (alent *), coff_sort_func_alent);
/* Create the new sorted table. */
qsort (func_table, nbr_func, sizeof (alent *), coff_sort_func_alent);
/* Create the new sorted table. */
- amt = (bfd_size_type) asect->lineno_count * sizeof (alent);
-
n_lineno_cache = (alent *) bfd_alloc (abfd, amt
);
+ n_lineno_cache = (alent *) bfd_alloc2 (abfd, asect->lineno_count,
+
sizeof (alent)
);
if (n_lineno_cache != NULL)
{
alent *n_cache_ptr = n_lineno_cache;
if (n_lineno_cache != NULL)
{
alent *n_cache_ptr = n_lineno_cache;
@@
-4427,9
+4443,9
@@
coff_slurp_line_table (bfd *abfd, asection *asect)
*n_cache_ptr++ = *old_ptr++;
while (old_ptr->line_number != 0);
}
*n_cache_ptr++ = *old_ptr++;
while (old_ptr->line_number != 0);
}
- BFD_ASSERT ((bfd_size_type) (n_cache_ptr - n_lineno_cache) == (amt / sizeof (alent)));
- memcpy (lineno_cache, n_lineno_cache, amt);
+ memcpy (lineno_cache, n_lineno_cache,
+ asect->lineno_count * sizeof (alent));
}
else
ret = FALSE;
}
else
ret = FALSE;
@@
-4452,7
+4468,6
@@
coff_slurp_symbol_table (bfd * abfd)
combined_entry_type *native_symbols;
coff_symbol_type *cached_area;
unsigned int *table_ptr;
combined_entry_type *native_symbols;
coff_symbol_type *cached_area;
unsigned int *table_ptr;
- bfd_size_type amt;
unsigned int number_of_symbols = 0;
bfd_boolean ret = TRUE;
unsigned int number_of_symbols = 0;
bfd_boolean ret = TRUE;
@@
-4464,15
+4479,14
@@
coff_slurp_symbol_table (bfd * abfd)
return FALSE;
/* Allocate enough room for all the symbols in cached form. */
return FALSE;
/* Allocate enough room for all the symbols in cached form. */
- amt = obj_raw_syment_count (abfd);
- amt *= sizeof (coff_symbol_type);
-
cached_area = (coff_symbol_type *) bfd_alloc (abfd, amt
);
+ cached_area = (coff_symbol_type *) bfd_alloc2 (abfd,
+ obj_raw_syment_count (abfd),
+
sizeof (coff_symbol_type)
);
if (cached_area == NULL)
return FALSE;
if (cached_area == NULL)
return FALSE;
- amt = obj_raw_syment_count (abfd);
- amt *= sizeof (unsigned int);
- table_ptr = (unsigned int *) bfd_zalloc (abfd, amt);
+ table_ptr = (unsigned int *) bfd_zalloc2 (abfd, obj_raw_syment_count (abfd),
+ sizeof (unsigned int));
if (table_ptr == NULL)
return FALSE;
if (table_ptr == NULL)
return FALSE;
@@
-4794,7
+4808,7
@@
coff_slurp_symbol_table (bfd * abfd)
obj_symbols (abfd) = cached_area;
obj_raw_syments (abfd) = native_symbols;
obj_symbols (abfd) = cached_area;
obj_raw_syments (abfd) = native_symbols;
-
bfd_get_symcount (abfd)
= number_of_symbols;
+
abfd->symcount
= number_of_symbols;
obj_convert (abfd) = table_ptr;
/* Slurp the line tables for each section too. */
{
obj_convert (abfd) = table_ptr;
/* Slurp the line tables for each section too. */
{
@@
-4871,7
+4885,7
@@
coff_classify_symbol (bfd *abfd,
name = _bfd_coff_internal_syment_name (abfd, syment, buf)
sec = coff_section_from_bfd_index (abfd, syment->n_scnum);
if (sec != NULL && name != NULL
name = _bfd_coff_internal_syment_name (abfd, syment, buf)
sec = coff_section_from_bfd_index (abfd, syment->n_scnum);
if (sec != NULL && name != NULL
- && (strcmp (bfd_
get_section_name (abfd,
sec), name) == 0))
+ && (strcmp (bfd_
section_name (
sec), name) == 0))
return COFF_SYMBOL_PE_SECTION;
}
#endif
return COFF_SYMBOL_PE_SECTION;
}
#endif
@@
-4960,7
+4974,6
@@
coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
arelent *reloc_cache;
arelent *cache_ptr;
unsigned int idx;
arelent *reloc_cache;
arelent *cache_ptr;
unsigned int idx;
- bfd_size_type amt;
if (asect->relocation)
return TRUE;
if (asect->relocation)
return TRUE;
@@
-4971,10
+4984,11
@@
coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
if (!coff_slurp_symbol_table (abfd))
return FALSE;
if (!coff_slurp_symbol_table (abfd))
return FALSE;
- amt = (bfd_size_type) bfd_coff_relsz (abfd) * asect->reloc_count;
- native_relocs = (RELOC *) buy_and_read (abfd, asect->rel_filepos, amt);
- amt = (bfd_size_type) asect->reloc_count * sizeof (arelent);
- reloc_cache = (arelent *) bfd_alloc (abfd, amt);
+ native_relocs = (RELOC *) buy_and_read (abfd, asect->rel_filepos,
+ asect->reloc_count,
+ bfd_coff_relsz (abfd));
+ reloc_cache = (arelent *) bfd_alloc2 (abfd, asect->reloc_count,
+ sizeof (arelent));
if (reloc_cache == NULL || native_relocs == NULL)
return FALSE;
if (reloc_cache == NULL || native_relocs == NULL)
return FALSE;
@@
-5528,6
+5542,9
@@
coff_bigobj_swap_aux_in (bfd *abfd,
AUXENT_BIGOBJ *ext = (AUXENT_BIGOBJ *) ext1;
union internal_auxent *in = (union internal_auxent *) in1;
AUXENT_BIGOBJ *ext = (AUXENT_BIGOBJ *) ext1;
union internal_auxent *in = (union internal_auxent *) in1;
+ /* Make sure that all fields in the aux structure are
+ initialised. */
+ memset (in, 0, sizeof * in);
switch (in_class)
{
case C_FILE:
switch (in_class)
{
case C_FILE:
@@
-5733,6
+5750,10
@@
static bfd_coff_backend_data bigobj_swap_table =
#define coff_bfd_is_group_section bfd_generic_is_group_section
#endif
#define coff_bfd_is_group_section bfd_generic_is_group_section
#endif
+#ifndef coff_bfd_group_name
+#define coff_bfd_group_name bfd_coff_group_name
+#endif
+
#ifndef coff_bfd_discard_group
#define coff_bfd_discard_group bfd_generic_discard_group
#endif
#ifndef coff_bfd_discard_group
#define coff_bfd_discard_group bfd_generic_discard_group
#endif
@@
-5746,6
+5767,10
@@
static bfd_coff_backend_data bigobj_swap_table =
#define coff_bfd_define_common_symbol bfd_generic_define_common_symbol
#endif
#define coff_bfd_define_common_symbol bfd_generic_define_common_symbol
#endif
+#ifndef coff_bfd_link_hide_symbol
+#define coff_bfd_link_hide_symbol _bfd_generic_link_hide_symbol
+#endif
+
#ifndef coff_bfd_define_start_stop
#define coff_bfd_define_start_stop bfd_generic_define_start_stop
#endif
#ifndef coff_bfd_define_start_stop
#define coff_bfd_define_start_stop bfd_generic_define_start_stop
#endif
This page took
0.027092 seconds
and
4
git commands to generate.