RFR: 8304674: File java.c compile error with -fsanitize=address -O0

SendaoYan syan at openjdk.org
Sun Mar 30 15:11:41 UTC 2025


Hi all,
File src/java.base/share/native/libjli/java.c compile error: control reaches end of non-void function [-Werror=return-type] with gcc options -fsanitize=address -O0. The function int JavaMain(void* _args) in this file will execute return ret in LEAVE() macro, but gcc with -O0 is not smart enough to recognized that the function already has return statement before at the end of function. It's a gcc bug which has been recorded by [80959](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80959), and below code snippet can demonstrate the gcc bug. I think we should disable return-type gcc warning for java.c file before the gcc bug has been fixed. Risk is low.


> cat java.c
char a() {
  return 0;
  int b;
  if (a(&b))
    return 0;
}

> gcc -O0 -Wall -Wextra -Werror -O0 -c java.c -fsanitize=address
java.c: In function ‘a’:
java.c:6:1: error: control reaches end of non-void function [-Werror=return-type]
    6 | }
      | ^
cc1: all warnings being treated as errors

-------------

Commit messages:
 - 8304674: File java.c compile error with -fsanitize=address -O0

Changes: https://git.openjdk.org/jdk/pull/24318/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24318&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8304674
  Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/24318.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24318/head:pull/24318

PR: https://git.openjdk.org/jdk/pull/24318


More information about the build-dev mailing list