[bpf-next] libbpf: fix build by renaming variables
diff mbox series

Message ID 20191216082738.28421-1-prashantbhole.linux@gmail.com
State Accepted
Delegated to: BPF Maintainers
Headers show
Series
  • [bpf-next] libbpf: fix build by renaming variables
Related show

Commit Message

Prashant Bhole Dec. 16, 2019, 8:27 a.m. UTC
In btf__align_of() variable name 't' is shadowed by inner block
declaration of another variable with same name. Patch renames
variables in order to fix it.

  CC       sharedobjs/btf.o
btf.c: In function ‘btf__align_of’:
btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
  303 |   int i, align = 1, t;
      |                     ^
btf.c:283:25: note: shadowed declaration is here
  283 |  const struct btf_type *t = btf__type_by_id(btf, id);
      |

Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>
---
 tools/lib/bpf/btf.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Comments

Toke Høiland-Jørgensen Dec. 16, 2019, 10:19 a.m. UTC | #1
Prashant Bhole <prashantbhole.linux@gmail.com> writes:

> In btf__align_of() variable name 't' is shadowed by inner block
> declaration of another variable with same name. Patch renames
> variables in order to fix it.
>
>   CC       sharedobjs/btf.o
> btf.c: In function ‘btf__align_of’:
> btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
>   303 |   int i, align = 1, t;
>       |                     ^
> btf.c:283:25: note: shadowed declaration is here
>   283 |  const struct btf_type *t = btf__type_by_id(btf, id);
>       |
>
> Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
> Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>

Seems there are quite a few build errors in bpf today; this at least
fixes libbpf. Thank you!

Tested-by: Toke Høiland-Jørgensen <toke@redhat.com>
Daniel Borkmann Dec. 16, 2019, 1:25 p.m. UTC | #2
On Mon, Dec 16, 2019 at 05:27:38PM +0900, Prashant Bhole wrote:
> In btf__align_of() variable name 't' is shadowed by inner block
> declaration of another variable with same name. Patch renames
> variables in order to fix it.
> 
>   CC       sharedobjs/btf.o
> btf.c: In function ‘btf__align_of’:
> btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
>   303 |   int i, align = 1, t;
>       |                     ^
> btf.c:283:25: note: shadowed declaration is here
>   283 |  const struct btf_type *t = btf__type_by_id(btf, id);
>       |
> 
> Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
> Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>

Applied, thanks!
Alexei Starovoitov Dec. 16, 2019, 2:02 p.m. UTC | #3
On Mon, Dec 16, 2019 at 5:25 AM Daniel Borkmann <daniel@iogearbox.net> wrote:
>
> On Mon, Dec 16, 2019 at 05:27:38PM +0900, Prashant Bhole wrote:
> > In btf__align_of() variable name 't' is shadowed by inner block
> > declaration of another variable with same name. Patch renames
> > variables in order to fix it.
> >
> >   CC       sharedobjs/btf.o
> > btf.c: In function ‘btf__align_of’:
> > btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
> >   303 |   int i, align = 1, t;
> >       |                     ^
> > btf.c:283:25: note: shadowed declaration is here
> >   283 |  const struct btf_type *t = btf__type_by_id(btf, id);
> >       |
> >
> > Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
> > Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>
>
> Applied, thanks!

Prashant,
Thanks for the fixes.
Which compiler do use?
Sadly I didn't see any of those with my gcc 6.3.0
Going to upgrade it. Need to decide which one.
Daniel Borkmann Dec. 16, 2019, 2:29 p.m. UTC | #4
On Mon, Dec 16, 2019 at 06:02:26AM -0800, Alexei Starovoitov wrote:
> On Mon, Dec 16, 2019 at 5:25 AM Daniel Borkmann <daniel@iogearbox.net> wrote:
> > On Mon, Dec 16, 2019 at 05:27:38PM +0900, Prashant Bhole wrote:
> > > In btf__align_of() variable name 't' is shadowed by inner block
> > > declaration of another variable with same name. Patch renames
> > > variables in order to fix it.
> > >
> > >   CC       sharedobjs/btf.o
> > > btf.c: In function ‘btf__align_of’:
> > > btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
> > >   303 |   int i, align = 1, t;
> > >       |                     ^
> > > btf.c:283:25: note: shadowed declaration is here
> > >   283 |  const struct btf_type *t = btf__type_by_id(btf, id);
> > >       |
> > >
> > > Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
> > > Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>
> >
> > Applied, thanks!
> 
> Prashant,
> Thanks for the fixes.
> Which compiler do use?
> Sadly I didn't see any of those with my gcc 6.3.0
> Going to upgrade it. Need to decide which one.

I've seen it with:

$ gcc --version
gcc (GCC) 9.0.1 20190312 (Red Hat 9.0.1-0.10)
Prashant Bhole Dec. 17, 2019, 12:15 a.m. UTC | #5
On 12/16/19 11:02 PM, Alexei Starovoitov wrote:
> On Mon, Dec 16, 2019 at 5:25 AM Daniel Borkmann <daniel@iogearbox.net> wrote:
>>
>> On Mon, Dec 16, 2019 at 05:27:38PM +0900, Prashant Bhole wrote:
>>> In btf__align_of() variable name 't' is shadowed by inner block
>>> declaration of another variable with same name. Patch renames
>>> variables in order to fix it.
>>>
>>>    CC       sharedobjs/btf.o
>>> btf.c: In function ‘btf__align_of’:
>>> btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
>>>    303 |   int i, align = 1, t;
>>>        |                     ^
>>> btf.c:283:25: note: shadowed declaration is here
>>>    283 |  const struct btf_type *t = btf__type_by_id(btf, id);
>>>        |
>>>
>>> Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
>>> Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>
>>
>> Applied, thanks!
> 
> Prashant,
> Thanks for the fixes.
> Which compiler do use?

gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1)

> Sadly I didn't see any of those with my gcc 6.3.0
> Going to upgrade it. Need to decide which one.
>
Alexei Starovoitov Dec. 17, 2019, 2:07 a.m. UTC | #6
On Mon, Dec 16, 2019 at 4:17 PM Prashant Bhole
<prashantbhole.linux@gmail.com> wrote:
>
>
>
> On 12/16/19 11:02 PM, Alexei Starovoitov wrote:
> > On Mon, Dec 16, 2019 at 5:25 AM Daniel Borkmann <daniel@iogearbox.net> wrote:
> >>
> >> On Mon, Dec 16, 2019 at 05:27:38PM +0900, Prashant Bhole wrote:
> >>> In btf__align_of() variable name 't' is shadowed by inner block
> >>> declaration of another variable with same name. Patch renames
> >>> variables in order to fix it.
> >>>
> >>>    CC       sharedobjs/btf.o
> >>> btf.c: In function ‘btf__align_of’:
> >>> btf.c:303:21: error: declaration of ‘t’ shadows a previous local [-Werror=shadow]
> >>>    303 |   int i, align = 1, t;
> >>>        |                     ^
> >>> btf.c:283:25: note: shadowed declaration is here
> >>>    283 |  const struct btf_type *t = btf__type_by_id(btf, id);
> >>>        |
> >>>
> >>> Fixes: 3d208f4ca111 ("libbpf: Expose btf__align_of() API")
> >>> Signed-off-by: Prashant Bhole <prashantbhole.linux@gmail.com>
> >>
> >> Applied, thanks!
> >
> > Prashant,
> > Thanks for the fixes.
> > Which compiler do use?
>
> gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1)

I've tried devtoolset-8 and devtoolset-9.
Which is
gcc version 9.1.1 20190605 (Red Hat 9.1.1-2) (GCC)

make clean;make doesn't produce that warning.
make V=1 tells me:
gcc -O2 -W -Wall -Wextra -Wno-unused-parameter
-Wno-missing-field-initializers -Wbad-function-cast
-Wdeclaration-after-statement -Wformat-security -Wformat-y2k
-Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wstrict-prototypes -Wswitch-default -Wundef
-Wwrite-strings -Wformat -Wstrict-aliasing=3 -fno-strict-aliasing
-Wno-shadow
... -c -MMD -o gen.o gen.c

For some odd reason this check is failing for me
$ tools/scripts/Makefile.include
ifneq ($(filter 3.%,$(MAKE_VERSION)),)  # make-3
EXTRA_WARNINGS += -fno-strict-aliasing
EXTRA_WARNINGS += -Wno-shadow
else
EXTRA_WARNINGS += -Wshadow
endif

$ make -v
GNU Make 3.82

Not sure how to fix this.

Patch
diff mbox series

diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c
index 520021939d81..5f04f56e1eb6 100644
--- a/tools/lib/bpf/btf.c
+++ b/tools/lib/bpf/btf.c
@@ -300,16 +300,16 @@  int btf__align_of(const struct btf *btf, __u32 id)
 	case BTF_KIND_UNION: {
 		const struct btf_member *m = btf_members(t);
 		__u16 vlen = btf_vlen(t);
-		int i, align = 1, t;
+		int i, max_align = 1, align;
 
 		for (i = 0; i < vlen; i++, m++) {
-			t = btf__align_of(btf, m->type);
-			if (t <= 0)
-				return t;
-			align = max(align, t);
+			align = btf__align_of(btf, m->type);
+			if (align <= 0)
+				return align;
+			max_align = max(max_align, align);
 		}
 
-		return align;
+		return max_align;
 	}
 	default:
 		pr_warn("unsupported BTF_KIND:%u\n", btf_kind(t));