aboutsummaryrefslogtreecommitdiff
path: root/bfd/ecoff.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1994-03-31 19:44:10 +0000
committerIan Lance Taylor <ian@airs.com>1994-03-31 19:44:10 +0000
commit1788b1bd01d0a7cf52f609fbf48e040428274f4a (patch)
treea4d6480ff9110f74ee7517638e85f9c44466f4aa /bfd/ecoff.c
parente9c6595dd4f1fd6fbba6ed08d71f84f04f975986 (diff)
downloadgdb-1788b1bd01d0a7cf52f609fbf48e040428274f4a.zip
gdb-1788b1bd01d0a7cf52f609fbf48e040428274f4a.tar.gz
gdb-1788b1bd01d0a7cf52f609fbf48e040428274f4a.tar.bz2
* ecoff.c (ecoff_write_object_contents): Set the text_start and
data_start entries in the optional header correctly even if a text or data section starts at location zero.
Diffstat (limited to 'bfd/ecoff.c')
-rw-r--r--bfd/ecoff.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/bfd/ecoff.c b/bfd/ecoff.c
index 93d35c4..93d8136 100644
--- a/bfd/ecoff.c
+++ b/bfd/ecoff.c
@@ -2492,8 +2492,10 @@ ecoff_write_object_contents (abfd)
bfd_size_type reloc_size;
bfd_size_type text_size;
bfd_vma text_start;
+ boolean set_text_start;
bfd_size_type data_size;
bfd_vma data_start;
+ boolean set_data_start;
bfd_size_type bss_size;
PTR buff = NULL;
PTR reloc_buff = NULL;
@@ -2521,8 +2523,10 @@ ecoff_write_object_contents (abfd)
else
text_size = 0;
text_start = 0;
+ set_text_start = false;
data_size = 0;
data_start = 0;
+ set_data_start = false;
bss_size = 0;
/* Write section headers to the file. */
@@ -2615,8 +2619,11 @@ ecoff_write_object_contents (abfd)
|| strcmp (current->name, _PDATA) == 0)
{
text_size += bfd_get_section_size_before_reloc (current);
- if (text_start == 0 || text_start > vma)
- text_start = vma;
+ if (! set_text_start || text_start > vma)
+ {
+ text_start = vma;
+ set_text_start = true;
+ }
}
else if ((section.s_flags & STYP_RDATA) != 0
|| (section.s_flags & STYP_DATA) != 0
@@ -2627,8 +2634,11 @@ ecoff_write_object_contents (abfd)
|| strcmp (current->name, _XDATA) == 0)
{
data_size += bfd_get_section_size_before_reloc (current);
- if (data_start == 0 || data_start > vma)
- data_start = vma;
+ if (! set_data_start || data_start > vma)
+ {
+ data_start = vma;
+ set_data_start = true;
+ }
}
else if ((section.s_flags & STYP_BSS) != 0
|| (section.s_flags & STYP_SBSS) != 0)