diff options
author | Ian Lance Taylor <ian@airs.com> | 1994-03-31 19:44:10 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1994-03-31 19:44:10 +0000 |
commit | 1788b1bd01d0a7cf52f609fbf48e040428274f4a (patch) | |
tree | a4d6480ff9110f74ee7517638e85f9c44466f4aa /bfd/ecoff.c | |
parent | e9c6595dd4f1fd6fbba6ed08d71f84f04f975986 (diff) | |
download | gdb-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.c | 18 |
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) |