From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6924981393259520730==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: [PATCH] libebl: Fix missing brackets around if statement body. Date: Sat, 09 Jan 2016 22:26:46 +0100 Message-ID: <1452374806-14958-1-git-send-email-mjw@redhat.com> --===============6924981393259520730== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable GCC6 [will have] a nice new warning that showed a real bug: elfutils/libebl/eblobjnote.c: In function =E2=80=98ebl_object_note=E2=80=99: elfutils/libebl/eblobjnote.c:135:5: error: statement is indented as if it w= ere guarded by... [-Werror=3Dmisleading-indentation] switch (type) ^~~~~~ elfutils/libebl/eblobjnote.c:45:3: note: ...this =E2=80=98if=E2=80=99 claus= e, 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 --- 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 + + * eblobjnote.c (ebl_object_note): Add brackets around if statement + body. + 2015-12-18 Mark Wielaard = * 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 , 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) =3D=3D 0) - { - if (type !=3D 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) =3D=3D 0) { - Elf64_Addr a64[3]; - Elf32_Addr a32[3]; - } addrs; + if (type !=3D 3) + { + printf (gettext ("unknown SDT version %u\n"), type); + return; + } = - size_t addrs_size =3D 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 =3D + union { - .d_type =3D ELF_T_ADDR, .d_version =3D EV_CURRENT, - .d_buf =3D (void *) desc, .d_size =3D addrs_size - }; - - Elf_Data dst =3D - { - .d_type =3D ELF_T_ADDR, .d_version =3D EV_CURRENT, - .d_buf =3D &addrs, .d_size =3D addrs_size - }; - - if (gelf_xlatetom (ebl->elf, &dst, &src, - elf_getident (ebl->elf, NULL)[EI_DATA]) =3D=3D NULL) - { - printf ("%s\n", elf_errmsg (-1)); - return; - } - - const char *provider =3D desc + addrs_size; - const char *pname =3D memchr (provider, '\0', desc + descsz - provider); - if (pname =3D=3D NULL) - goto invalid_sdt; - - ++pname; - const char *args =3D memchr (pname, '\0', desc + descsz - pname); - if (args =3D=3D NULL || - memchr (++args, '\0', desc + descsz - pname) !=3D desc + descsz - 1) - goto invalid_sdt; - - GElf_Addr pc; - GElf_Addr base; - GElf_Addr sem; - if (gelf_getclass (ebl->elf) =3D=3D ELFCLASS32) - { - pc =3D addrs.a32[0]; - base =3D addrs.a32[1]; - sem =3D addrs.a32[2]; - } - else - { - pc =3D addrs.a64[0]; - base =3D addrs.a64[1]; - sem =3D 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") =3D=3D 0 && descsz > 0) - { - printf (gettext (" Build ID: ")); - uint_fast32_t i; - for (i =3D 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") =3D=3D 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") =3D=3D 0 && descsz >=3D 8 && descsz % 4 =3D=3D 0) - { - Elf_Data in =3D - { - .d_version =3D EV_CURRENT, - .d_type =3D ELF_T_WORD, - .d_size =3D descsz, - .d_buf =3D (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 =3D 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 =3D + { + .d_type =3D ELF_T_ADDR, .d_version =3D EV_CURRENT, + .d_buf =3D (void *) desc, .d_size =3D addrs_size + }; + + Elf_Data dst =3D + { + .d_type =3D ELF_T_ADDR, .d_version =3D EV_CURRENT, + .d_buf =3D &addrs, .d_size =3D addrs_size + }; + + if (gelf_xlatetom (ebl->elf, &dst, &src, + elf_getident (ebl->elf, NULL)[EI_DATA]) =3D=3D NULL) + { + printf ("%s\n", elf_errmsg (-1)); + return; + } + + const char *provider =3D desc + addrs_size; + const char *pname =3D memchr (provider, '\0', desc + descsz - provider); + if (pname =3D=3D NULL) + goto invalid_sdt; + + ++pname; + const char *args =3D memchr (pname, '\0', desc + descsz - pname); + if (args =3D=3D NULL || + memchr (++args, '\0', desc + descsz - pname) !=3D desc + descsz - 1) + goto invalid_sdt; + + GElf_Addr pc; + GElf_Addr base; + GElf_Addr sem; + if (gelf_getclass (ebl->elf) =3D=3D ELFCLASS32) + { + pc =3D addrs.a32[0]; + base =3D addrs.a32[1]; + sem =3D addrs.a32[2]; + } + else + { + pc =3D addrs.a64[0]; + base =3D addrs.a64[1]; + sem =3D 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") =3D=3D 0 && descsz > 0) + { + printf (gettext (" Build ID: ")); + uint_fast32_t i; + for (i =3D 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") =3D=3D 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") =3D=3D 0 && descsz >=3D 8 && descsz % 4 =3D=3D= 0) + { + Elf_Data in =3D + { + .d_version =3D EV_CURRENT, + .d_type =3D ELF_T_WORD, + .d_size =3D descsz, + .d_buf =3D (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 =3D malloc (descsz); - if (unlikely (buf =3D=3D NULL)) - return; - } - else - buf =3D sbuf; - Elf_Data out =3D - { - .d_version =3D EV_CURRENT, - .d_type =3D ELF_T_WORD, - .d_size =3D descsz, - .d_buf =3D buf - }; - - if (elf32_xlatetom (&out, &in, ebl->data) !=3D NULL) - { - const char *os; - switch (buf[0]) - { - case ELF_NOTE_OS_LINUX: - os =3D "Linux"; - break; - - case ELF_NOTE_OS_GNU: - os =3D "GNU"; - break; - - case ELF_NOTE_OS_SOLARIS2: - os =3D "Solaris"; - break; - - case ELF_NOTE_OS_FREEBSD: - os =3D "FreeBSD"; - break; - - default: - os =3D "???"; - break; - } - - printf (gettext (" OS: %s, ABI: "), os); - for (size_t cnt =3D 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 =3D malloc (descsz); + if (unlikely (buf =3D=3D NULL)) + return; + } + else + buf =3D sbuf; + Elf_Data out =3D + { + .d_version =3D EV_CURRENT, + .d_type =3D ELF_T_WORD, + .d_size =3D descsz, + .d_buf =3D buf + }; + + if (elf32_xlatetom (&out, &in, ebl->data) !=3D NULL) + { + const char *os; + switch (buf[0]) + { + case ELF_NOTE_OS_LINUX: + os =3D "Linux"; + break; + + case ELF_NOTE_OS_GNU: + os =3D "GNU"; + break; + + case ELF_NOTE_OS_SOLARIS2: + os =3D "Solaris"; + break; + + case ELF_NOTE_OS_FREEBSD: + os =3D "FreeBSD"; + break; + + default: + os =3D "???"; + break; + } + + printf (gettext (" OS: %s, ABI: "), os); + for (size_t cnt =3D 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 --===============6924981393259520730==--