[Bug middle-end/105316] New: Seemingly bogus -Wdangling-pointer from ppc/ppc64 kernel printk with gcc12

raj.khem at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Apr 20 03:24:49 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105316

            Bug ID: 105316
           Summary: Seemingly bogus -Wdangling-pointer from ppc/ppc64
                    kernel printk with gcc12
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: raj.khem at gmail dot com
  Target Milestone: ---

I have reduced this case from ppc kernel 5.15, this breaks the kernel build as
the warning is treated as error. 

ftrace.i
======================

int _printk(const char *fmt, ...);

static void ftrace_modify_code() {
 _printk("replaced (%s)", ({ char __str[sizeof("00000000 00000000")]; __str;
}));
}


=====================

powerpc64le-yoe-linux-musl-gcc -c ftrace.i -Werror=dangling-pointer 
ftrace.i: In function 'ftrace_modify_code':
ftrace.i:4:2: error: using a dangling pointer to '__str'
[-Werror=dangling-pointer=]
    4 |  _printk("replaced (%s)", ({ char __str[sizeof("00000000 00000000")];
__str; }));
      | 
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ftrace.i:4:35: note: '__str' declared here
    4 |  _printk("replaced (%s)", ({ char __str[sizeof("00000000 00000000")];
__str; }));
      |                                   ^~~~~
cc1: some warnings being treated as errors


More information about the Gcc-bugs mailing list