Fri Jun 30 16:07:18 1995 Steve Chamberlain <sac@slash.cygnus.com>

* cofflink.c (_bfd_coff_generic_relocate_section): Compare
	the full text of .reloc or .edata section names.
This commit is contained in:
Steve Chamberlain
1995-06-30 23:19:57 +00:00
parent d84d840f18
commit ece22cd04c
2 changed files with 19 additions and 17 deletions

View File

@ -1,3 +1,8 @@
Fri Jun 30 16:07:18 1995 Steve Chamberlain <sac@slash.cygnus.com>
* cofflink.c (_bfd_coff_generic_relocate_section): Compare
the full text of .reloc or .edata section names.
Fri Jun 30 15:47:37 1995 Fred Fish <fnf@deneb.cygnus.com> Fri Jun 30 15:47:37 1995 Fred Fish <fnf@deneb.cygnus.com>
* cofflink.c (_bfd_coff_generic_relocate_section): * cofflink.c (_bfd_coff_generic_relocate_section):

View File

@ -2305,16 +2305,15 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
+ sec->output_offset + sec->output_offset
+ sym->n_value + sym->n_value
- sec->vma); - sec->vma);
if (obj_pe(output_bfd)) { if (obj_pe (output_bfd))
/* Make a correction here to val if the sec is either .rsrc {
or .idata */ /* Make a correction here to val if the sec is either .rsrc$nnn
or .idata$nnn or reloc or edata */
if (strcmp (input_section->name, ".text") != 0) if (strcmp (input_section->name, ".text") != 0)
{ {
if (strncmp (sec->name, ".idata$", 7) == 0) if (strncmp (sec->name, ".idata$", 7) == 0
val -= NT_IMAGE_BASE; || strcmp (sec->name, ".reloc") == 0
if (strncmp (sec->name, ".reloc", 6) == 0) || strcmp (sec->name, ".edata") == 0)
val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".edata", 5) == 0)
val -= NT_IMAGE_BASE; val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".rsrc$", 6) == 0) else if (strncmp (sec->name, ".rsrc$", 6) == 0)
{ {
@ -2337,15 +2336,13 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
+ sec->output_section->vma + sec->output_section->vma
+ sec->output_offset); + sec->output_offset);
if (obj_pe (output_bfd)) { if (obj_pe (output_bfd)) {
/* Make a correction here to val if the sec is either .rsrc /* Make a correction here to val if the sec is either .rsrc$nnn
or .idata */ or .idata$nnnn or reloc or edata. */
if (strcmp (input_section->name, ".text") != 0) if (strcmp (input_section->name, ".text") != 0)
{ {
if (strncmp (sec->name, ".idata$", 7) == 0) if (strncmp (sec->name, ".idata$", 7) == 0
val -= NT_IMAGE_BASE; || strcmp (sec->name, ".reloc") == 0
else if (strncmp (sec->name, ".reloc", 5) == 0) || strcmp (sec->name, ".edata") == 0)
val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".edata", 5) == 0)
val -= NT_IMAGE_BASE; val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".rsrc$", 6) == 0) else if (strncmp (sec->name, ".rsrc$", 6) == 0)
{ {
@ -2471,7 +2468,7 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
/* relocation to a symbol in a section which /* relocation to a symbol in a section which
isn't absolute - we output the address here isn't absolute - we output the address here
to a file */ to a file */
bfd_vma addr = rel->r_vaddr bfd_vma addr = rel->r_vaddr
+ input_section->output_offset + input_section->output_offset
+ input_section->output_section->vma; + input_section->output_section->vma;
fwrite (&addr, 1,4, info->base_file); fwrite (&addr, 1,4, info->base_file);
@ -2503,7 +2500,7 @@ _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset; name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
else else
{ {
strncpy (buf, sym->_n._n_name, SYMNMLEN); strncpy (buf, sym->_n._n_name, SYMNMLEN);
buf[SYMNMLEN] = '\0'; buf[SYMNMLEN] = '\0';
name = buf; name = buf;
} }