This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [patch] elf32-i386.c, check for null
On Thu, Jul 26, 2007 at 06:42:01PM -0700, msnyder@sonic.net wrote:
>
> >
> > I prefer BFD_ASSERT (h != NULL) and R_386_GNU_VTINHERIT has the same
> > issue.
>
> OK -- how's this?
>
> 2007-07-25 Michael Snyder <msnyder@access-company.com>
>
> * elf32-i386.c (elf_i386_check_relocs): Check for null pointer.
>
> Index: elf32-i386.c
> ===================================================================
> RCS file: /cvs/src/src/bfd/elf32-i386.c,v
> retrieving revision 1.174
> diff -p -r1.174 elf32-i386.c
> *** elf32-i386.c 3 Jul 2007 14:26:41 -0000 1.174
> --- elf32-i386.c 27 Jul 2007 01:40:47 -0000
> *************** elf_i386_check_relocs (bfd *abfd,
> *** 1270,1284 ****
> /* This relocation describes the C++ object vtable hierarchy.
> Reconstruct it for later use during GC. */
> case R_386_GNU_VTINHERIT:
> ! if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
> ! return FALSE;
> break;
>
> /* This relocation describes which C++ vtable entries are actually
> used. Record for later use during GC. */
> case R_386_GNU_VTENTRY:
> ! if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
> ! return FALSE;
> break;
>
> default:
> --- 1270,1288 ----
> /* This relocation describes the C++ object vtable hierarchy.
> Reconstruct it for later use during GC. */
> case R_386_GNU_VTINHERIT:
> ! BFD_ASSERT (h != NULL);
> ! if (h != NULL)
> ! if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
> ! return FALSE;
> break;
>
> /* This relocation describes which C++ vtable entries are actually
> used. Record for later use during GC. */
> case R_386_GNU_VTENTRY:
> ! BFD_ASSERT (h != NULL);
> ! if (h != NULL)
> ! if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
> ! return FALSE;
> break;
>
It is OK. Can you use
if (h != NULL
&& !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
return FALSE;
2 ifs look odd to me. But it is OK if you don't want to change.
Thanks.
H.J.