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>
* 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
+ sym->n_value
- sec->vma);
if (obj_pe(output_bfd)) {
/* Make a correction here to val if the sec is either .rsrc
or .idata */
if (obj_pe (output_bfd))
{
/* 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 (strncmp (sec->name, ".idata$", 7) == 0)
val -= NT_IMAGE_BASE;
if (strncmp (sec->name, ".reloc", 6) == 0)
val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".edata", 5) == 0)
if (strncmp (sec->name, ".idata$", 7) == 0
|| strcmp (sec->name, ".reloc") == 0
|| strcmp (sec->name, ".edata") == 0)
val -= NT_IMAGE_BASE;
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_offset);
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$nnnn or reloc or edata. */
if (strcmp (input_section->name, ".text") != 0)
{
if (strncmp (sec->name, ".idata$", 7) == 0)
val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".reloc", 5) == 0)
val -= NT_IMAGE_BASE;
else if (strncmp (sec->name, ".edata", 5) == 0)
if (strncmp (sec->name, ".idata$", 7) == 0
|| strcmp (sec->name, ".reloc") == 0
|| strcmp (sec->name, ".edata") == 0)
val -= NT_IMAGE_BASE;
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
isn't absolute - we output the address here
to a file */
bfd_vma addr = rel->r_vaddr
bfd_vma addr = rel->r_vaddr
+ input_section->output_offset
+ input_section->output_section->vma;
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;
else
{
strncpy (buf, sym->_n._n_name, SYMNMLEN);
strncpy (buf, sym->_n._n_name, SYMNMLEN);
buf[SYMNMLEN] = '\0';
name = buf;
}