anestisb / vdexExtractor

Tool to decompile & extract Android Dex bytecode from Vdex files
Apache License 2.0
1k stars 215 forks source link

[FIX] Build fails on GCC 13.2.1 with `dex_instruction.c:655:43: error: argument 2 of type ‘u4[kMaxVarArgRegs]’ {aka ‘unsigned int[kMaxVarArgRegs]’} declared as a variable length array [-Werror=vla-parameter]` #82

Open dreirund opened 3 months ago

dreirund commented 3 months ago

I am building with GCC version 13.2.1.

./make.sh fails with

[...]
gcc -c -std=c11 -D_GNU_SOURCE -Wall -Wextra -Werror -DVERSION=\"dev-78f283b\" -c dex_instruction.c -o dex_instruction.o
dex_instruction.c:655:43: error: argument 2 of type ‘u4[kMaxVarArgRegs]’ {aka ‘unsigned int[kMaxVarArgRegs]’} declared as a variable length array [-Werror=vla-parameter]
  655 | void dexInstr_getVarArgs(u2 *code_ptr, u4 arg[kMaxVarArgRegs]) {
      |                                        ~~~^~~~~~~~~~~~~~~~~~~
In file included from dex_instruction.c:23:
dex_instruction.h:278:32: note: previously declared as an ordinary array ‘u4[]’ {aka ‘unsigned int[]’}
  278 | void dexInstr_getVarArgs(u2 *, u4[]);
      |                                ^~~~
cc1: all warnings being treated as errors
make: *** [Makefile:56: dex_instruction.o] Error 1

A manual workaround is to issue make CFLAGS="${CFLAGS} -Wno-error=vla-parameter" -C src instead of ./make.sh.

Regards!

RJMultiDev commented 1 month ago

i found that you can edit src/Makefile and remove '-Werror' to build it

dreirund commented 1 month ago

i found that you can edit src/Makefile and remove -Werror to build it

Ahoj,

now that a fix is known, how about implementing the fix, @anestisb?

RJMultiDev commented 1 month ago

i found that you can edit src/Makefile and remove -Werror to build it

Ahoj,

now that a fix is known, how about implementing the fix, @anestisb?

I have created a pull request. You can try Fixed version and build it. Maybe later i'll create a release.

dreirund commented 1 month ago

You can try Fixed version and build it.

I am fine with manual make invokation specifiying manually the needed -Wno-error-statement as I already mentioned in my reporting post.