[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ld: spurious empty .plt/.rela.plt sections generated
From: |
Alan Modra |
Subject: |
Re: ld: spurious empty .plt/.rela.plt sections generated |
Date: |
Sun, 1 May 2011 09:27:04 +0930 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Fri, Apr 29, 2011 at 05:07:33PM -0700, Roland McGrath wrote:
> I am seeing a strange thing. The (BFD) linker spuriously generates .plt
> and .rela.plt sections (both empty) for a link that has no need for them.
> It's reproduced with a trivial example, and seen on today's binutils trunk.
> Gold does not produce the empty sections.
HJ, please verify that this fix doesn't break anything else.
Index: bfd/elf64-x86-64.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-x86-64.c,v
retrieving revision 1.223
diff -u -p -r1.223 elf64-x86-64.c
--- bfd/elf64-x86-64.c 23 Apr 2011 01:16:31 -0000 1.223
+++ bfd/elf64-x86-64.c 30 Apr 2011 23:50:57 -0000
@@ -1261,7 +1261,9 @@ elf_x86_64_check_relocs (bfd *abfd, stru
case R_X86_64_PLT32:
case R_X86_64_GOTPCREL:
case R_X86_64_GOTPCREL64:
- if (!_bfd_elf_create_ifunc_sections (abfd, info))
+ if (htab->elf.dynobj == NULL)
+ htab->elf.dynobj = abfd;
+ if (!_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
return FALSE;
break;
}
Index: bfd/elf32-i386.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-i386.c,v
retrieving revision 1.251
diff -u -p -r1.251 elf32-i386.c
--- bfd/elf32-i386.c 23 Apr 2011 01:16:31 -0000 1.251
+++ bfd/elf32-i386.c 30 Apr 2011 23:50:59 -0000
@@ -1376,7 +1376,9 @@ elf_i386_check_relocs (bfd *abfd,
case R_386_PLT32:
case R_386_GOT32:
case R_386_GOTOFF:
- if (!_bfd_elf_create_ifunc_sections (abfd, info))
+ if (htab->elf.dynobj == NULL)
+ htab->elf.dynobj = abfd;
+ if (!_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
return FALSE;
break;
}
--
Alan Modra
Australia Development Lab, IBM