G'day,
Here's the result of compiling IM on Gentoo (gcc 6.4.x), and running
the compilation output script to collate the warnings emitted by the
compiler.
On the one hand, it's reasonably manageable: 310 lines, versus the
1341 lines of CD under Gentoo (remember that gcc 6 does a much
better job of flow tracing than gcc 5, and so the warnings emitted
by gcc 6 on Gentoo will be significantly higher than the warnings
emitted by gcc 5 on Mint).
On the other hand, anyone wanting to tackle these warnings faces a
difficult task: Quite a lot of the code is taken from snapshots of
third-party libraries, and many of these libraries have moved on
significantly since that time. Backporting the latest version of
these libraries will very often address the warning, but this is a
painstaking and error-prone process, and should not be attempted
unless sufficient safeguards are in place.
So... is anyone able to provide me with simple, IM-only code that
runs in a test rig, or, failing that, give me some pointers on how
to create such a rig? I'm especially interested in hearing about
edge cases that stress the infrastructure, and/or deliberately try
to be abuse interfaces (e.g. open non-existent files).
Any and all help would be gratefully received.
cheers,
sur-behoffski
programmer, Grouse Software
* No diagnostics for:
#include expects "FILENAME" or <FILENAME>
missing binary operator before token "("
<FUNC> is deprecated [-Wdeprecated-declarations]
<FUNC1> is deprecated: Use <FUNC2> instead [-Wdeprecated-declarations]
too many arguments for format [-Wformat-extra-args]
format not a string literal and no format arguments [-Wformat-security]
assignment from incompatible pointer type [-Wincompatible-pointer-types]
initialization from incompatible pointer type [-Wincompatible-pointer-types]
passing argument <NUM> of <FUNC> from incompatible pointer type
[-Wincompatible-pointer-types]
<VAR> may be used uninitialized in this function [-Wmaybe-uninitialized]
missing braces around initializer [-Wmissing-braces]
suggest parentheses around '&&' within '||' [-Wparentheses]
no return statement in function returning non-void [-Wreturn-type]
control reaches end of non-void function [-Wreturn-type]
this 'else' clause does not guard... [-Wmisleading-indentation]
this 'for' clause does not guard... [-Wmisleading-indentation]
this 'while' clause does not guard... [-Wmisleading-indentation]
ignoring #pragma omp critical [-Wunknown-pragmas]
ignoring #pragma omp for [-Wunknown-pragmas]
ignoring #pragma omp parallel [-Wunknown-pragmas]
ignoring #pragma omp section [-Wunknown-pragmas]
ignoring #pragma warning [-Wunknown-pragmas]
dereferencing type-punned pointer will break strict-aliasing rules
[-Wstrict-aliasing]
enumeration value <ENUM> not handled in switch [-Wswitch]
<EXPRESSION> is used uninitialized in this function [-Wuninitialized]
<VAR> defined but not used [-Wunused-const-variable=]
unused variable <VAR> [-Wunused-variable]
deprecated conversion from string constant to <TYPE> [-Wwrite-strings]
(End of list.)
comparison between <ENUM1> and <ENUM2> [-Wenum-compare]:
libexif/fuji/mnote-fuji-entry.c:233:[Function:mnote_fuji_entry_get_value]:
ExifTag {aka const enum <anonymous>} MnoteFujiTag {aka enum _MnoteFujiTag}
libexif/olympus/mnote-olympus-entry.c:430:[Function:mnote_olympus_entry_get_value]:
ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum
_MnoteOlympusTag}
libexif/olympus/mnote-olympus-entry.c:500:[Function:mnote_olympus_entry_get_value]:
ExifTag {aka const enum <anonymous>} MnoteOlympusTag {aka enum
_MnoteOlympusTag}
libexif/pentax/mnote-pentax-entry.c:347:[Function:mnote_pentax_entry_get_value]:
ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum
_MnotePentaxTag}
libexif/pentax/mnote-pentax-entry.c:371:[Function:mnote_pentax_entry_get_value]:
ExifTag {aka const enum <anonymous>} MnotePentaxTag {aka enum
_MnotePentaxTag}
format <FMT> expects argument of type <TYPE1>, but argument <NUM> has type
<TYPE2> [-Wformat=]:
libtiff/tif_predict.c:645:[Function:PredictorEncodeTile]: %u unsigned
int 4 tmsize_t {aka long unsigned int}
libexif/fuji/exif-mnote-data-fuji.c:227:[Function:exif_mnote_data_fuji_load]:
%u unsigned int 5 size_t {aka long unsigned int}
libexif/canon/exif-mnote-data-canon.c:270:[Function:exif_mnote_data_canon_load]:
%u unsigned int 5 size_t {aka long unsigned int}
libexif/olympus/exif-mnote-data-olympus.c:485:[Function:exif_mnote_data_olympus_load]:
%u unsigned int 5 size_t {aka long unsigned int}
libexif/pentax/exif-mnote-data-pentax.c:310:[Function:exif_mnote_data_pentax_load]:
%u unsigned int 5 size_t {aka long unsigned int}
libjasper/base/jas_debug.c:128:[Function:jas_memdump]: %x unsigned int
3 size_t {aka long unsigned int}
libjasper/jpc/jpc_mqenc.c:388:[Function:jpc_mqenc_dump]: %d int 3 long
int
libjasper/jpc/jpc_mqdec.c:303:[Function:jpc_mqdec_dump]: %d int 3 long
int
libjasper/jpc/jpc_mqdec.c:304:[Function:jpc_mqdec_dump]: %d int 3 long
int
implicit declaration of function <FUNC> [-Wimplicit-function-declaration]:
libjasper/base/jas_getopt.c:129:[Function:jas_getopt]: jas_eprintf
libjasper/jpc/jpc_qmfb.c:1618:[Function:jpc_ft_synthesize]:
jas_do_progress
libjasper/jpc/jpc_qmfb.c:1619:[Function:jpc_ft_synthesize]: jas_test_abort
libjasper/jpc/jpc_tsfb.c:124:[Function:jpc_tsfb_analyze]:
jpc_tsfb_analyze2
libjasper/jpc/jpc_tsfb.c:151:[Function:jpc_tsfb_synthesize]:
jpc_tsfb_synthesize2
libjasper/jpc/jpc_t1dec.c:248:[Function:jpc_dec_decodecblk]: jas_eprintf
cast to pointer from integer of different size [-Wint-to-pointer-cast]:
tiff_binfile.c:74:[Function:TIFFFdOpen]:
tif = TIFFClientOpen(name, mode, (thandle_t) fd, iTIFFReadProc,
iTIFFWriteProc,
im_format_tiff.cpp:693:[MemeberFunction:virtual void*
imFileFormatTIFF::Handle(int)]:
return (void*)this->tiff->tif_fd;
<VAR> is usually a function [-Wmain]:
libjpeg/jdmainct.c:162:[Function:alloc_funny_pointers]: main
libjpeg/jdmainct.c:203:[Function:make_funny_pointers]: main
libjpeg/jdmainct.c:243:[Function:set_wraparound_pointers]: main
libjpeg/jdmainct.c:272:[Function:set_bottom_pointers]: main
libjpeg/jdmainct.c:309:[Function:start_pass_main]: main
libjpeg/jdmainct.c:349:[Function:process_data_simple_main]: main
libjpeg/jdmainct.c:389:[Function:process_data_context_main]: main
libjpeg/jdmainct.c:478:[Function:jinit_d_main_controller]: main
libjpeg/jcmainct.c:71:[Function:start_pass_main]: main
libjpeg/jcmainct.c:117:[Function:process_data_simple_main]: main
libjpeg/jcmainct.c:247:[Function:jinit_c_main_controller]: main
the use of `tmpnam' is dangerous, better use `mkstemp':
jas_stream.c:[At:(.text+0x6e6)]:
suggest parentheses around assignment used as truth value [-Wparentheses]:
libjasper/base/jas_image.c:230:[Function:jas_box_alloc]:
if ( box->buf = (uint_fast8_t *) jas_malloc( size ) )
suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]:
lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessSplitComplex]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:61:[Function:imluaProcessMergeComplex]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessAutoCovariance]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessNormalizeComponents]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
lua5/imlua_process.c:55:[Function:imluaProcessNormDiffRatio]:
if ((_si)->data_type == IM_DOUBLE || (_si)->data_type == IM_CDOUBLE) \
cast from pointer to integer of different size [-Wpointer-to-int-cast]:
libjasper/base/jas_image.c:232:[Function:jas_box_alloc]:
return (bool) box->buf;
libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]:
jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" );
libjasper/jpc/jpc_t1enc.c:135:[Function:jpc_enc_enccblks]:
jas_do_progress( (int) lvl, (int) (endlvls-1), "jpc: encode" );
<VAR> will be initialized after [-Wreorder]:
im_format_jp2.cpp:109:[Constructor:imFileFormatJP2::imFileFormatJP2(const
imFormat*)]: imFileFormatJP2::image
jas_image_t *image;
^~~~~
im_format_jp2.cpp:108:17: warning: 'jas_stream_t* imFileFormatJP2::stream'
[-Wreorder]
jas_stream_t *stream;
^~~~~~
im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder]
imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat),
image(0), stream(0), fmtid(-1) {}
^~~~~~~~~~~~~~~
im_format_jp2.cpp:108:[Constructor:imFileFormatJP2::imFileFormatJP2(const
imFormat*)]: imFileFormatJP2::stream
jas_stream_t *stream;
^~~~~~
im_format_jp2.cpp:107:7: warning: 'int imFileFormatJP2::fmtid' [-Wreorder]
int fmtid;
^~~~~
im_format_jp2.cpp:112:3: warning: when initialized here [-Wreorder]
imFileFormatJP2(const imFormat* _iformat) : imFileFormatBase(_iformat),
image(0), stream(0), fmtid(-1) {}
^~~~~~~~~~~~~~~
case value <LABEL> not in enumerated type <ENUM> [-Wswitch]:
libexif/exif-entry.c:1199:[Function:exif_entry_get_value]: 0 ExifTag
{aka enum <anonymous>}
libexif/exif-entry.c:1226:[Function:exif_entry_get_value]: 5 ExifTag
{aka enum <anonymous>}
libexif/exif-entry.c:1239:[Function:exif_entry_get_value]: 7 ExifTag
{aka enum <anonymous>}
this 'if' clause does not guard... [-Wmisleading-indentation]:
libtiff/tif_read.c:495:[Function:TIFFFillStrip]:
if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
^~
libtiff/tif_read.c:498:2: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if ((tif->tif_flags&TIFF_NOREADRAW)==0)
^~
libtiff/tif_read.c:798:[Function:TIFFFillTile]:
if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
^~
libtiff/tif_read.c:801:2: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if ((tif->tif_flags&TIFF_NOREADRAW)==0)
^~
libtiff/tif_read.c:960:[Function:TIFFStartStrip]:
if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
^~
libtiff/tif_read.c:963:2: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
^~
libtiff/tif_dirread.c:4272:[Function:EstimateStripByteCounts]:
if( !_TIFFFillStriles( tif ) )
^~
libtiff/tif_dirread.c:4275:2: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (td->td_stripbytecount)
^~
process/im_analyze.cpp:727:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:727:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:737:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:737:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:747:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:747:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:840:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:840:29: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:969:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:969:25: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:727:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:727:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:737:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:737:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:747:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:747:27: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:840:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:840:29: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:969:[Function:int
imAnalyzeMeasurePrincipalAxis(const imImage*, const int*, const double*, const
double*, int, double*, double*, double*, double*)]:
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
process/im_analyze.cpp:969:25: note: ...this statement, but the latter is
misleadingly indented as if it is guarded by the 'if'
if (cm20) free(cm20); if (cm02) free(cm02); if (cm11) free(cm11);
^~
<FUNC> defined but not used [-Wunused-function]:
libjasper/jpc/jpc_enc.c:886:[Function:jpc_enc_encodemainbody]:
jpc_calcssexp
libjasper/jpc/jpc_enc.c:870:[Function:jpc_enc_encodemainbody]:
jpc_calcssmant
ignoring return value of <FUNC>, declared with attribute warn_unused_result
[-Wunused-result]:
libjasper/base/jas_stream.c:369:[Function:jas_stream_tmpfile]: tmpnam
statement with no effect [-Wunused-value]:
libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_title]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/fuji/mnote-fuji-tag.c:46:[Function:mnote_fuji_tag_get_description]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_title]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/canon/mnote-canon-tag.c:46:[Function:mnote_canon_tag_get_description]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_title]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/olympus/mnote-olympus-tag.c:46:[Function:mnote_olympus_tag_get_description]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_title]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/pentax/mnote-pentax-tag.c:46:[Function:mnote_pentax_tag_get_description]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/exif-entry.c:46:[Function:exif_entry_get_value]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/exif-format.c:46:[Function:exif_format_get_name]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/exif-tag.c:46:[Function:exif_tag_get_title_in_ifd]:
# define bindtextdomain(Domain,Directory) (Domain)
libexif/exif-tag.c:46:[Function:exif_tag_get_description_in_ifd]:
# define bindtextdomain(Domain,Directory) (Domain)
<VAR> defined but not used [-Wunused-variable]:
libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]:
xmp_uuid
libjasper/jp2/jp2_cod.h:125:[#included-from:libjasper/jp2/jp2_cod.h:125]:
msi_uuid
libjasper/jp2/jp2_cod.h:132:[#included-from:libjasper/jp2/jp2_cod.h:132]:
xmp_uuid
variable <VAR> set but not used [-Wunused-but-set-variable]:
libtiff/tif_open.c:106:[Function:TIFFClientOpen]: n
libexif/olympus/mnote-olympus-entry.c:343:[Function:mnote_olympus_entry_get_value]:
d
libjasper/base/jas_icc.c:1072:[Function:jas_icctxtdesc_copy]: txtdesc
libjasper/base/jas_icc.c:1259:[Function:jas_icclut8_copy]: lut8
libjasper/base/jas_image.c:1360:[Function:jas_image_chclrspc]: numoutchans
libjasper/base/jas_image.c:1353:[Function:jas_image_chclrspc]:
numinauxchans
libjasper/jp2/jp2_dec.c:115:[Function:jp2_decode]: cdefd
libjasper/jpc/jpc_t1enc.c:210:[Function:jpc_enc_enccblk]: rlvl
libjasper/jpc/jpc_t1enc.c:205:[Function:jpc_enc_enccblk]: ret
libjasper/jpc/jpc_dec.c:438:[Function:jpc_dec_process_crg]: crg
libjasper/jpc/jpc_dec.c:702:[Function:jpc_dec_tileinit]: brcbgyend
libjasper/jpc/jpc_enc.c:873:[Function:jpc_calcssmant]: e
libjasper/jpc/jpc_enc.c:904:[Function:jpc_enc_encodemainhdr]: mctsynweight
libjasper/jpc/jpc_enc.c:1121:[Function:jpc_enc_encodemainbody]: numbytes
libjasper/jpc/jpc_enc.c:1107:[Function:jpc_enc_encodemainbody]: tiley
libjasper/jpc/jpc_enc.c:1106:[Function:jpc_enc_encodemainbody]: tilex
warning: ISO C++ forbids converting a string constant to <TYPE>
[-Wwrite-strings]:
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
im_format_tiff.cpp:[At:52]: char*
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users