Fwd: New Defects reported by Coverity Scan for RTEMS

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Dec 9 09:11:51 UTC 2020


On 08/12/2020 19:10, Gedare Bloom wrote:

>
> Hi all,
>
> I get a text report on new defects from Coverity. I don't know how I 
> managed to sign up for it, and I'm not sure I can get it sent to any 
> list automatically, but here is the current updated new defects. Just 
> looks like two new ones related to static assertions.
>
> ---------- Forwarded message ---------
> From: <scan-admin at coverity.com <mailto:scan-admin at coverity.com>>
> Date: Mon, Dec 7, 2020 at 7:38 AM
> Subject: New Defects reported by Coverity Scan for RTEMS
> To: <gedare at gwmail.gwu.edu <mailto:gedare at gwmail.gwu.edu>>
>
>
> Hi,
>
> Please find the latest report on new defect(s) introduced to RTEMS 
> found with Coverity Scan.
>
> 1 new defect(s) introduced to RTEMS found with Coverity Scan.
> 10 defect(s), reported by Coverity Scan earlier, were marked fixed in 
> the recent build analyzed by Coverity Scan.
>
> New defect(s) Reported-by: Coverity Scan
> Showing 1 of 1 defect(s)
>
>
> ** CID 1470570:    (PARSE_ERROR)
> /cpukit/include/rtems/confdefs/inittask.h: 110 in ()
> /cpukit/include/rtems/confdefs/inittask.h: 110 in ()
>
>
> ________________________________________________________________________________________________________
> *** CID 1470570:    (PARSE_ERROR)
> /cpukit/include/rtems/confdefs/inittask.h: 110 in ()
> 104      */
> 105     #pragma GCC diagnostic push
> 106     #pragma GCC diagnostic ignored "-Waddress"
> 107     #pragma GCC diagnostic ignored "-Wpragmas"
> 108     #pragma GCC diagnostic ignored "-Wtautological-pointer-compare"
> 109
> >>>     CID 1470570:    (PARSE_ERROR)
> >>>     type of cast must be integral
> 110     RTEMS_STATIC_ASSERT(
> 111       CONFIGURE_INIT_TASK_ENTRY_POINT != NULL,
> 112       CONFIGURE_INIT_TASK_ENTRY_POINT_MUST_NOT_BE_NULL
> 113     );
> 114
> 115     #pragma GCC diagnostic pop
> /cpukit/include/rtems/confdefs/inittask.h: 110 in ()
> 104      */
> 105     #pragma GCC diagnostic push
> 106     #pragma GCC diagnostic ignored "-Waddress"
> 107     #pragma GCC diagnostic ignored "-Wpragmas"
> 108     #pragma GCC diagnostic ignored "-Wtautological-pointer-compare"
> 109
> >>>     CID 1470570:    (PARSE_ERROR)
> >>>     expression must be an integral constant expression
> 110     RTEMS_STATIC_ASSERT(
> 111       CONFIGURE_INIT_TASK_ENTRY_POINT != NULL,
> 112       CONFIGURE_INIT_TASK_ENTRY_POINT_MUST_NOT_BE_NULL
> 113     );
> 114
> 115     #pragma GCC diagnostic pop

I checked an example code with three compilers and noticed no standard 
related warnings. I can ask on a C/C++ mailing list if the code is 
standard compliant. It could be Coverity bug.

#include <cstddef>

void f(void);

static_assert(f != NULL, "f");

constexpr bool g()
{
   return f != NULL;
}

extern const bool b;

const bool b = g();

arm-rtems6-g++ -Wall -Wextra -pedantic -std=c++11 -S -o - test.cc
         .cpu arm7tdmi
         .eabi_attribute 20, 1
         .eabi_attribute 21, 1
         .eabi_attribute 23, 3
         .eabi_attribute 24, 1
         .eabi_attribute 25, 1
         .eabi_attribute 26, 2
         .eabi_attribute 30, 6
         .eabi_attribute 34, 0
         .eabi_attribute 18, 4
         .file   "test.cc"
test.cc:5:17: warning: the address of 'void f()' will never be NULL 
[-Waddress]
     5 | static_assert(f != NULL, "f");
       |                 ^
test.cc: In function 'constexpr bool g()':
test.cc:9:12: warning: the address of 'void f()' will never be NULL 
[-Waddress]
     9 |   return f != NULL;
       |            ^
         .text
         .global b
         .section        .rodata
         .type   b, %object
         .size   b, 1
b:
         .byte   1
         .ident  "GCC: (GNU) 10.2.1 20201203 (RTEMS 6, RSB 
ff6b2320ed34abab48751022085912217f42590d, Newlib 7fa8405)"


g++ -Wall -Wextra -pedantic -std=c++11 -S -o - test.cc
         .file   "test.cc"
test.cc:5:17: warning: the address of ‘void f()’ will never be NULL 
[-Waddress]
  static_assert(f != NULL, "f");
                  ^
test.cc: In function ‘constexpr bool g()’:
test.cc:9:12: warning: the address of ‘void f()’ will never be NULL 
[-Waddress]
    return f != NULL;
             ^
         .text
         .globl  b
         .section        .rodata
         .type   b, @object
         .size   b, 1
b:
         .byte   1
         .ident  "GCC: (SUSE Linux) 7.5.0"
         .section        .note.GNU-stack,"", at progbits


clang -Wall -Wextra -pedantic -std=c++11 -S -o - test.cc
test.cc:5:15: warning: comparison of function 'f' not equal to a null 
pointer is always true [-Wtautological-pointer-compare]
static_assert(f != NULL, "f");
               ^    ~~~~
test.cc:5:15: note: prefix with the address-of operator to silence this 
warning
static_assert(f != NULL, "f");
               ^
               &
test.cc:9:10: warning: comparison of function 'f' not equal to a null 
pointer is always true [-Wtautological-pointer-compare]
   return f != NULL;
          ^    ~~~~
test.cc:9:10: note: prefix with the address-of operator to silence this 
warning
   return f != NULL;
          ^
          &
         .text
         .file   "test.cc"
         .type   b, at object               # @b
         .section        .rodata,"a", at progbits
         .globl  b
b:
         .byte   1                       # 0x1
         .size   b, 1


         .ident  "clang version 7.0.1 (tags/RELEASE_701/final 349238)"
         .section        ".note.GNU-stack","", at progbits
         .addrsig
         .addrsig_sym b
2 warnings generated.

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber at embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/



More information about the devel mailing list