[vdr] Logs from building VDR 2.1.3 with Clang 3.4.1

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Sat Feb 8 13:51:10 CET 2014


On 08.02.2014 09:59, Paul Menzel wrote:
> Dear VDR folks,
>
>
> building VDR 2.1.3 with Clang 3.4.1 the warnings below are shown.
>
> Most warnings look like they can be ignored. Maybe you can spot
> something, which should be fixed.
>
>          $ clang --version
>          Debian clang version 3.4-1 (tags/RELEASE_34/final) (based on LLVM 3.4)
>          Target: i386-pc-linux-gnu
>          Thread model: posix
>          $ CC=clang CXX=clang++ make
>          […]
>          clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated

You may want to find an option that suppresses this warning, because the file names of VDR (*.c)
are not going to change.

>          ...
>          channels.c:45:119: warning: data argument not used by format string [-Wformat-extra-args]
>            snprintf(buffer, sizeof(buffer), rid ? "%s-%d-%d-%d-%d" : "%s-%d-%d-%d", *cSource::ToString(source), nid, tid, sid, rid);
>                                                                      ~~~~~~~~~~~~~                                             ^

This is explicitly checked with 'rid ? ...', so the warning is unjustified (although the compiler
probably has a hard time figuring that out ;-).

>          ...
>          ci.c:867:18: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>               tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(...
>                           ^~~~~
>                           .mjd =
>          ci.c:867:36: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>               tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(...
>                                             ^~~
>                                             .h =
>          ci.c:867:65: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>               tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(...
>                                                                          ^~~
>                                                                          .m =
>          ci.c:867:93: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>               tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(...
>                                                                                                      ^~~
>                                                                                                      .s =
>          ci.c:867:121: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>               tTime T = { mjd : htons(MJD), h : DEC2BCD(tm_gmt.tm_hour), m : DEC2BCD(tm_gmt.tm_min), s : DEC2BCD(tm_gmt.tm_sec), offset : short(htons(tm_lo...
>                                                                                                                                  ^~~~~~~~
>                                                                                                                                  .offset =
>          ci.c:1007:47: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>                                   tDisplayReply dr = { id : DRI_MMI_MODE_ACK, mode : MM_HIGH_LEVEL };
>                                                        ^~~~
>                                                        .id =
>          ci.c:1007:70: warning: use of GNU old-style field designator extension [-Wgnu-designator]
>                                   tDisplayReply dr = { id : DRI_MMI_MODE_ACK, mode : MM_HIGH_LEVEL };
>                                                                               ^~~~~~
>                                                                               .mode =

Fixed in the attached patch.

>          ...
>          In file included from dvbspu.c:14:
>          ./dvbspu.h:104:10: warning: private field 'ready' is not used [-Wunused-private-field]
>              bool ready;
>                   ^

Fixed in the attached patch.

>          ...
>          dvbsubtitle.c:37:13: warning: unused variable 'DebugBitmaps' [-Wunused-variable]
>          static bool DebugBitmaps   = DebugVerbose || DebugNormal;
>                      ^

Fixed in the attached patch.

>          ...
>          eit.c:223:43: warning: comparison of constant 176 with expression of type 'SI::LinkageType' is always false
>                [-Wtautological-constant-out-of-range-compare]
>                           if (ld->getLinkageType() == 0xB0) { // Premiere World
>                               ~~~~~~~~~~~~~~~~~~~~ ^  ~~~~

I assume this is because the enum LinkageType doesn't contain 0xB0. However, the actual value that
comes from the SI data may well be 0xB0, so I'm now typecasting uint(ld->getLinkageType()).

>          ...
>          menu.c:982:38: warning: first operand of this 'memcmp' call is a pointer to dynamic class 'cTimer'; vtable pointer will be compared
>                [-Wdynamic-class-memaccess]
>                                    if (memcmp(timer, &data, sizeof(data)) != 0)
>                                        ~~~~~~ ^
>          menu.c:982:38: note: explicitly cast the pointer to silence this warning
>                                    if (memcmp(timer, &data, sizeof(data)) != 0)
>                                               ^
>                                               (void*)

Fixed in the attached patch.

>          menu.c:4582:107: warning: data argument not used by format string [-Wformat-extra-args]
>               instantId = cString::sprintf(cDevice::NumDevices() > 1 ? "%s - %d" : "%s", timer->Channel()->Name(), device->CardIndex() + 1);
>                                                                                    ~~~~                            ^

Same as above (channels.c:45:119).

>          ...
>          menuitems.c:249:86: warning: data argument not used by format string [-Wformat-extra-args]
>            SetValue(cString::sprintf(s ? "%.*f %s" : "%.*f", factor / 10, double(v) / factor, s));
>                                                      ~~~~~~                                   ^

Same as above.

>          ...
>          receiver.c:28:6: warning: indirection of non-volatile null pointer will be deleted, not trap [-Wnull-dereference]
>               *(char *)0 = 0; // cause a segfault
>               ^~~~~~~~~~
>          receiver.c:28:6: note: consider using __builtin_trap() or qualifying pointer with 'volatile'

Can you suggest a different way of causing a segfault at this point?

>          ...
>          recording.c:2923:96: warning: data argument not used by format string [-Wformat-extra-args]
>            return cString::sprintf(WithFrame ? "%s%d:%02d:%02d.%02d" : "%s%d:%02d:%02d", Sign, h, m, s, f);
>                                                                        ~~~~~~~~~~~~~~~~                 ^

Same as above.

>          ...
>          In file included from remux.c:10:
>          ./remux.h:479:7: warning: private field 'numFrames' is not used [-Wunused-private-field]
>            int numFrames;
>                ^

Fixed in the attached patch.

>          ...
>          In file included from descriptor.c:14:
>          ./descriptor.h:493:34: warning: private field 's' is not used [-Wunused-private-field]
>             const descr_iso_639_language *s;
>                                           ^

Fixed in the attached patch.

>          ...
>          hdffosd.c:45:14: warning: private field 'mBitmapNumColors' is not used [-Wunused-private-field]
>              uint32_t mBitmapNumColors;
>                       ^
>          hdffosd.c:558:14: warning: private field 'mBitmapNumColors' is not used [-Wunused-private-field]
>              uint32_t mBitmapNumColors;
>                       ^

Fixed in the attached patch.

>          ...
>          *** Plugin pictures:
>          ...
>          player.c:222:15: warning: case value not in enumerated type 'eKeys' [-Wswitch]
>              case kLeft|k_Repeat:
>                        ^
>          player.c:226:16: warning: case value not in enumerated type 'eKeys' [-Wswitch]
>              case kRight|k_Repeat:

Fixed in the attached patch.

Klaus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vdr-2.1.4-fixclangwarnings.diff
Type: text/x-patch
Size: 6488 bytes
Desc: not available
URL: <http://www.linuxtv.org/pipermail/vdr/attachments/20140208/bb0a50b8/attachment.bin>


More information about the vdr mailing list