This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] libebl: Fix missing brackets around if statement body.


GCC6 [will have] a nice new warning that showed a real bug:

elfutils/libebl/eblobjnote.c: In function ‘ebl_object_note’:
elfutils/libebl/eblobjnote.c:135:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
     switch (type)
     ^~~~~~

elfutils/libebl/eblobjnote.c:45:3: note: ...this ‘if’ clause, but it is not
   if (! ebl->object_note (name, type, descsz, desc))
   ^~

And indeed, it should have been under the if, but wasn't because of missing
brackets. Added brackets (and reindent).

Signed-off-by: Mark Wielaard <mjw@redhat.com>
---
 libebl/ChangeLog    |   5 +
 libebl/eblobjnote.c | 362 ++++++++++++++++++++++++++--------------------------
 2 files changed, 187 insertions(+), 180 deletions(-)

diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index 312cf90..aa3d686 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-09  Mark Wielaard  <mjw@redhat.com>
+
+	* eblobjnote.c (ebl_object_note): Add brackets around if statement
+	body.
+
 2015-12-18  Mark Wielaard  <mjw@redhat.com>
 
 	* eblopenbackend.c (default_debugscn_p): Also match .zdebug sections.
diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c
index fa1eb93..f80a1a5 100644
--- a/libebl/eblobjnote.c
+++ b/libebl/eblobjnote.c
@@ -1,5 +1,5 @@
 /* Print contents of object file note.
-   Copyright (C) 2002, 2007, 2009, 2011, 2015 Red Hat, Inc.
+   Copyright (C) 2002, 2007, 2009, 2011, 2015, 2016 Red Hat, Inc.
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -43,189 +43,191 @@ ebl_object_note (Ebl *ebl, const char *name, uint32_t type,
 		 uint32_t descsz, const char *desc)
 {
   if (! ebl->object_note (name, type, descsz, desc))
-    /* The machine specific function did not know this type.  */
+    {
+      /* The machine specific function did not know this type.  */
 
-    if (strcmp ("stapsdt", name) == 0)
-      {
-	if (type != 3)
-	  {
-	    printf (gettext ("unknown SDT version %u\n"), type);
-	    return;
-	  }
-
-	/* Descriptor starts with three addresses, pc, base ref and
-	   semaphore.  Then three zero terminated strings provider,
-	   name and arguments.  */
-
-	union
+      if (strcmp ("stapsdt", name) == 0)
 	{
-	  Elf64_Addr a64[3];
-	  Elf32_Addr a32[3];
-	} addrs;
+	  if (type != 3)
+	    {
+	      printf (gettext ("unknown SDT version %u\n"), type);
+	      return;
+	    }
 
-	size_t addrs_size = gelf_fsize (ebl->elf, ELF_T_ADDR, 3, EV_CURRENT);
-	if (descsz < addrs_size + 3)
-	  {
-	  invalid_sdt:
-	    printf (gettext ("invalid SDT probe descriptor\n"));
-	    return;
-	  }
+	  /* Descriptor starts with three addresses, pc, base ref and
+	     semaphore.  Then three zero terminated strings provider,
+	     name and arguments.  */
 
-	Elf_Data src =
+	  union
 	  {
-	    .d_type = ELF_T_ADDR, .d_version = EV_CURRENT,
-	    .d_buf = (void *) desc, .d_size = addrs_size
-	  };
-
-	Elf_Data dst =
-	  {
-	    .d_type = ELF_T_ADDR, .d_version = EV_CURRENT,
-	    .d_buf = &addrs, .d_size = addrs_size
-	  };
-
-	if (gelf_xlatetom (ebl->elf, &dst, &src,
-			   elf_getident (ebl->elf, NULL)[EI_DATA]) == NULL)
-	  {
-	    printf ("%s\n", elf_errmsg (-1));
-	    return;
-	  }
-
-	const char *provider = desc + addrs_size;
-	const char *pname = memchr (provider, '\0', desc + descsz - provider);
-	if (pname == NULL)
-	  goto invalid_sdt;
-
-	++pname;
-	const char *args = memchr (pname, '\0', desc + descsz - pname);
-	if (args == NULL ||
-	    memchr (++args, '\0', desc + descsz - pname) != desc + descsz - 1)
-	  goto invalid_sdt;
-
-	GElf_Addr pc;
-	GElf_Addr base;
-	GElf_Addr sem;
-	if (gelf_getclass (ebl->elf) == ELFCLASS32)
-	  {
-	    pc = addrs.a32[0];
-	    base = addrs.a32[1];
-	    sem = addrs.a32[2];
-	  }
-	else
-	  {
-	    pc = addrs.a64[0];
-	    base = addrs.a64[1];
-	    sem = addrs.a64[2];
-	  }
-
-	printf (gettext ("    PC: "));
-	printf ("%#" PRIx64 ",", pc);
-	printf (gettext (" Base: "));
-	printf ("%#" PRIx64 ",", base);
-	printf (gettext (" Semaphore: "));
-	printf ("%#" PRIx64 "\n", sem);
-	printf (gettext ("    Provider: "));
-	printf ("%s,", provider);
-	printf (gettext (" Name: "));
-	printf ("%s,", pname);
-	printf (gettext (" Args: "));
-	printf ("'%s'\n", args);
-	return;
-      }
-
-    switch (type)
-      {
-      case NT_GNU_BUILD_ID:
-	if (strcmp (name, "GNU") == 0 && descsz > 0)
-	  {
-	    printf (gettext ("    Build ID: "));
-	    uint_fast32_t i;
-	    for (i = 0; i < descsz - 1; ++i)
-	      printf ("%02" PRIx8, (uint8_t) desc[i]);
-	    printf ("%02" PRIx8 "\n", (uint8_t) desc[i]);
-	  }
-	break;
-
-      case NT_GNU_GOLD_VERSION:
-	if (strcmp (name, "GNU") == 0 && descsz > 0)
-	  /* A non-null terminated version string.  */
-	  printf (gettext ("    Linker version: %.*s\n"),
-		  (int) descsz, desc);
-	break;
-
-      case NT_GNU_ABI_TAG:
-	if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0)
-	  {
-	    Elf_Data in =
-	      {
-		.d_version = EV_CURRENT,
-		.d_type = ELF_T_WORD,
-		.d_size = descsz,
-		.d_buf = (void *) desc
-	      };
-	    /* Normally NT_GNU_ABI_TAG is just 4 words (16 bytes).  If it
-	       is much (4*) larger dynamically allocate memory to convert.  */
+	    Elf64_Addr a64[3];
+	    Elf32_Addr a32[3];
+	  } addrs;
+
+	  size_t addrs_size = gelf_fsize (ebl->elf, ELF_T_ADDR, 3, EV_CURRENT);
+	  if (descsz < addrs_size + 3)
+	    {
+	    invalid_sdt:
+	      printf (gettext ("invalid SDT probe descriptor\n"));
+	      return;
+	    }
+
+	  Elf_Data src =
+	    {
+	      .d_type = ELF_T_ADDR, .d_version = EV_CURRENT,
+	      .d_buf = (void *) desc, .d_size = addrs_size
+	    };
+
+	  Elf_Data dst =
+	    {
+	      .d_type = ELF_T_ADDR, .d_version = EV_CURRENT,
+	      .d_buf = &addrs, .d_size = addrs_size
+	    };
+
+	  if (gelf_xlatetom (ebl->elf, &dst, &src,
+			     elf_getident (ebl->elf, NULL)[EI_DATA]) == NULL)
+	    {
+	      printf ("%s\n", elf_errmsg (-1));
+	      return;
+	    }
+
+	  const char *provider = desc + addrs_size;
+	  const char *pname = memchr (provider, '\0', desc + descsz - provider);
+	  if (pname == NULL)
+	    goto invalid_sdt;
+
+	  ++pname;
+	  const char *args = memchr (pname, '\0', desc + descsz - pname);
+	  if (args == NULL ||
+	      memchr (++args, '\0', desc + descsz - pname) != desc + descsz - 1)
+	    goto invalid_sdt;
+
+	  GElf_Addr pc;
+	  GElf_Addr base;
+	  GElf_Addr sem;
+	  if (gelf_getclass (ebl->elf) == ELFCLASS32)
+	    {
+	      pc = addrs.a32[0];
+	      base = addrs.a32[1];
+	      sem = addrs.a32[2];
+	    }
+	  else
+	    {
+	      pc = addrs.a64[0];
+	      base = addrs.a64[1];
+	      sem = addrs.a64[2];
+	    }
+
+	  printf (gettext ("    PC: "));
+	  printf ("%#" PRIx64 ",", pc);
+	  printf (gettext (" Base: "));
+	  printf ("%#" PRIx64 ",", base);
+	  printf (gettext (" Semaphore: "));
+	  printf ("%#" PRIx64 "\n", sem);
+	  printf (gettext ("    Provider: "));
+	  printf ("%s,", provider);
+	  printf (gettext (" Name: "));
+	  printf ("%s,", pname);
+	  printf (gettext (" Args: "));
+	  printf ("'%s'\n", args);
+	  return;
+	}
+
+      switch (type)
+	{
+	case NT_GNU_BUILD_ID:
+	  if (strcmp (name, "GNU") == 0 && descsz > 0)
+	    {
+	      printf (gettext ("    Build ID: "));
+	      uint_fast32_t i;
+	      for (i = 0; i < descsz - 1; ++i)
+		printf ("%02" PRIx8, (uint8_t) desc[i]);
+	      printf ("%02" PRIx8 "\n", (uint8_t) desc[i]);
+	    }
+	  break;
+
+	case NT_GNU_GOLD_VERSION:
+	  if (strcmp (name, "GNU") == 0 && descsz > 0)
+	    /* A non-null terminated version string.  */
+	    printf (gettext ("    Linker version: %.*s\n"),
+		    (int) descsz, desc);
+	  break;
+
+	case NT_GNU_ABI_TAG:
+	  if (strcmp (name, "GNU") == 0 && descsz >= 8 && descsz % 4 == 0)
+	    {
+	      Elf_Data in =
+		{
+		  .d_version = EV_CURRENT,
+		  .d_type = ELF_T_WORD,
+		  .d_size = descsz,
+		  .d_buf = (void *) desc
+		};
+	      /* Normally NT_GNU_ABI_TAG is just 4 words (16 bytes).  If it
+		 is much (4*) larger dynamically allocate memory to convert.  */
 #define FIXED_TAG_BYTES 16
-	    uint32_t sbuf[FIXED_TAG_BYTES];
-	    uint32_t *buf;
-	    if (unlikely (descsz / 4 > FIXED_TAG_BYTES))
-	      {
-	        buf = malloc (descsz);
-		if (unlikely (buf == NULL))
-		  return;
-	      }
-	    else
-	      buf = sbuf;
-	    Elf_Data out =
-	      {
-		.d_version = EV_CURRENT,
-		.d_type = ELF_T_WORD,
-		.d_size = descsz,
-		.d_buf = buf
-	      };
-
-	    if (elf32_xlatetom (&out, &in, ebl->data) != NULL)
-	      {
-		const char *os;
-		switch (buf[0])
-		  {
-		  case ELF_NOTE_OS_LINUX:
-		    os = "Linux";
-		    break;
-
-		  case ELF_NOTE_OS_GNU:
-		    os = "GNU";
-		    break;
-
-		  case ELF_NOTE_OS_SOLARIS2:
-		    os = "Solaris";
-		    break;
-
-		  case ELF_NOTE_OS_FREEBSD:
-		    os = "FreeBSD";
-		    break;
-
-		  default:
-		    os = "???";
-		    break;
-		  }
-
-		printf (gettext ("    OS: %s, ABI: "), os);
-		for (size_t cnt = 1; cnt < descsz / 4; ++cnt)
-		  {
-		    if (cnt > 1)
-		      putchar_unlocked ('.');
-		    printf ("%" PRIu32, buf[cnt]);
-		  }
-		putchar_unlocked ('\n');
-	      }
-	    if (descsz / 4 > FIXED_TAG_BYTES)
-	      free (buf);
-	    break;
-	  }
-	/* FALLTHROUGH */
-
-      default:
-	/* Unknown type.  */
-	break;
-      }
+	      uint32_t sbuf[FIXED_TAG_BYTES];
+	      uint32_t *buf;
+	      if (unlikely (descsz / 4 > FIXED_TAG_BYTES))
+		{
+		  buf = malloc (descsz);
+		  if (unlikely (buf == NULL))
+		    return;
+		}
+	      else
+		buf = sbuf;
+	      Elf_Data out =
+		{
+		  .d_version = EV_CURRENT,
+		  .d_type = ELF_T_WORD,
+		  .d_size = descsz,
+		  .d_buf = buf
+		};
+
+	      if (elf32_xlatetom (&out, &in, ebl->data) != NULL)
+		{
+		  const char *os;
+		  switch (buf[0])
+		    {
+		    case ELF_NOTE_OS_LINUX:
+		      os = "Linux";
+		      break;
+
+		    case ELF_NOTE_OS_GNU:
+		      os = "GNU";
+		      break;
+
+		    case ELF_NOTE_OS_SOLARIS2:
+		      os = "Solaris";
+		      break;
+
+		    case ELF_NOTE_OS_FREEBSD:
+		      os = "FreeBSD";
+		      break;
+
+		    default:
+		      os = "???";
+		      break;
+		    }
+
+		  printf (gettext ("    OS: %s, ABI: "), os);
+		  for (size_t cnt = 1; cnt < descsz / 4; ++cnt)
+		    {
+		      if (cnt > 1)
+			putchar_unlocked ('.');
+		      printf ("%" PRIu32, buf[cnt]);
+		    }
+		  putchar_unlocked ('\n');
+		}
+	      if (descsz / 4 > FIXED_TAG_BYTES)
+		free (buf);
+	      break;
+	    }
+	  /* FALLTHROUGH */
+
+	default:
+	  /* Unknown type.  */
+	  break;
+	}
+    }
 }
-- 
1.8.3.1

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]