[GRASS-dev] compilation of grass on AIX 7.1

Glynn Clements glynn at gclements.plus.com
Thu Jul 18 11:48:58 PDT 2013


Markus Neteler wrote:

> I scanned the logs for (potential) errors and found a few:
> 
> cd lib/gis/

> parser_interface.c: In function 'print_escaped_for_xml':
> parser_interface.c:67:2: warning: passing argument 2 of 'libiconv'
> from incompatible pointer type [enabled by default]
> /usr/opt/freeware/bin/../lib/gcc/../../include/iconv.h:83:15: note:
> expected 'const char **' but argument is of type 'char **'

This is harmless.

POSIX says both arguments should be "char **", and Linux agrees. There
is no formulation which will please both AIX and Linux.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/iconv.html

Rationale for the incompatibility:

http://c-faq.com/ansi/constmismatch.html

> gmake[4]: Entering directory
> `/gpfs/home/neteler/software/grass-7.0.svn/lib/db/dbmi_driver'
> ...
> lex  -t sqlp.l > sqlp.yy.c
> 5: (Warning) No translation given - null string assumed
> 209: (Warning) Executable statements should occur right after %%
> 210: (Warning) Executable statements should occur right after %%
> 211: (Warning) Executable statements should occur right after %%

Right; someone forgot the %{...%} around the comments:

--- lib/db/sqlp/sqlp.l	(revision 57205)
+++ lib/db/sqlp/sqlp.l	(working copy)
@@ -205,10 +205,11 @@
   ***************************************/
 %}
 "--".*$		;	/* comment */
-
+%{
  /***************************************
   * DEFAULT RULE
   ***************************************/
+%}
 .	{ yyerror("Syntax error"); }
 
 %%

> gmake[4]: Entering directory
> `/gpfs/home/neteler/software/grass-7.0.svn/lib/db/dbmi_base'
> ...
> dirent.c:20:0: warning: "R_OK" redefined [enabled by default]
> /usr/include/sys/access.h:52:0: note: this is the location of the
> previous definition

Indeed. I don't know why local definitions were added (they are
present in r11675, the oldest version in SVN), but they don't belong
there.

> gmake[3]: Entering directory
> `/gpfs/home/neteler/software/grass-7.0.svn/lib/imagery'
> ...
> iclass_statistics.c: In function 'I_iclass_free_statistics':
> iclass_statistics.c:114:5: warning: passing argument 1 of 'G_free'
> discards 'const' qualifier from pointer target type [enabled by
> default]

The IClass_statistics structure declares name and color as
"const char *".

Either the fields should be changed to "char *", or
I_iclass_free_statistics() should explicitly cast them in the G_free()
calls.

> gmake[4]: Entering directory
> `/gpfs/home/neteler/software/grass-7.0.svn/raster/r.clump'
> ...
> clump.c: In function 'clump':
> clump.c:68:5: warning: passing argument 1 of 'time' from incompatible
> pointer type [enabled by default]
> /usr/include/time.h:142:20: note: expected 'time_t *' but argument is
> of type 'long int *'

"cur_time" should be changed from long to time_t.

> clump.c: In function 'print_time':
> clump.c:258:5: warning: passing argument 1 of 'time' from incompatible
> pointer type [enabled by default]
> /usr/include/time.h:142:20: note: expected 'time_t *' but argument is
> of type 'long int *'

"done" should be changed from long to time_t.

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-dev mailing list