aboutsummaryrefslogtreecommitdiff
path: root/bfd/cofflink.c
diff options
context:
space:
mode:
authorSteve Chamberlain <sac@cygnus>1995-08-29 21:05:59 +0000
committerSteve Chamberlain <sac@cygnus>1995-08-29 21:05:59 +0000
commit3ea928f5a902b2dd53d16cfda009c5b8a9653398 (patch)
treebba8105c6eaa5a49101cd55baa9cf71daa5736e9 /bfd/cofflink.c
parentf88ebc68615192a6a98888452d103c7e017e2c1f (diff)
downloadgdb-3ea928f5a902b2dd53d16cfda009c5b8a9653398.zip
gdb-3ea928f5a902b2dd53d16cfda009c5b8a9653398.tar.gz
gdb-3ea928f5a902b2dd53d16cfda009c5b8a9653398.tar.bz2
Tue Aug 29 13:50:21 1995 steve chamberlain <sac@slash.cygnus.com>
* libbfd.h, bfd-in2.h: regenerated. * coff-arm.c (aoutarm_std_relo): New entry at 11. (arm_reloc_type_lookup) : Understand type 11. * coff-i386.c (howto_table): fix name of rva type. (coff-i386_rtype_to_howto): Understand R_IMAGEBASE type. * coffcode.h (sec_to_styp_flags): .edata is data. (coff_compute_section_file_positions): Get page size right for PE. (fill_pe_header_info): Fix fields. (coff_write_object_contents): Remove end_of_image calc. (_bfd_coff_generate_reloc_section): Remove orphaned comment. * coffswap.h (coff_swap_scnhdr_in): Don't always add IMAGE_BASE. (coff_swap_scnhdr_out): Setup PE flags correctly. * reloc.c (BFD_RELOC_RVA): New field.
Diffstat (limited to 'bfd/cofflink.c')
-rw-r--r--bfd/cofflink.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/bfd/cofflink.c b/bfd/cofflink.c
index c4c42d5..43bb69f 100644
--- a/bfd/cofflink.c
+++ b/bfd/cofflink.c
@@ -1622,7 +1622,17 @@ coff_link_input_bfd (finfo, input_bfd)
bfd_byte *eline;
bfd_byte *elineend;
- if (o->lineno_count == 0)
+ /* FIXME: If SEC_HAS_CONTENTS is not for the section, then
+ build_link_order in ldwrite.c will not have created a
+ link order, which means that we will not have seen this
+ input section in _bfd_coff_final_link, which means that
+ we will not have allocated space for the line numbers of
+ this section. I don't think line numbers can be
+ meaningful for a section which does not have
+ SEC_HAS_CONTENTS set, but, if they do, this must be
+ changed. */
+ if (o->lineno_count == 0
+ || (o->output_section->flags & SEC_HAS_CONTENTS) == 0)
continue;
if (bfd_seek (input_bfd, o->line_filepos, SEEK_SET) != 0
@@ -2225,15 +2235,6 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
if (howto == NULL)
return false;
- /* WINDOWS_NT; in this next section, the value of 'val' will be computed.
- With respect to the .idata and .rsrc sections, the NT_IMAGE_BASE
- must be removed from the value that is to be relocated (NT_IMAGE_BASE
- is currently defined in internal.h and has value 400000). Now this
- value should only be removed from addresses being relocated in the
- .idata and .rsrc sections, not the .text section which should have
- the 'real' address. In addition, the .rsrc val's must also be
- adjusted by the input_section->vma. */
-
val = 0;
if (h == NULL)