[ET Trac] [Einstein Toolkit] #1459: ExternalLibraries/PAPI does not build with gcc 4.8.1

Einstein Toolkit trac-noreply at einsteintoolkit.org
Thu Oct 24 12:40:40 CDT 2013


#1459: ExternalLibraries/PAPI does not build with gcc 4.8.1
------------------------------------+---------------------------------------
  Reporter:  rhaas                  |       Owner:                     
      Type:  defect                 |      Status:  new                
  Priority:  major                  |   Milestone:                     
 Component:  EinsteinToolkit thorn  |     Version:  development version
Resolution:                         |    Keywords:  PAPI               
------------------------------------+---------------------------------------

Comment (by rhaas):

 It is a warning about shadowed variables and shadowing is in principle
 allowed in C so there needs not be an actual error. The only reason that
 the compilation aborts is that PAPI seems to use flags to turn warnings
 into errors (and presumably that gcc 4.8.1 contains more warnings in -Wall
 than 4.7 did). As far as I can tell there is no error. The code
 (schematically) looks like this:
 {{{
 while(foo) {
   char * endptr;
   /* no use of endptr*/
   if(bar) {
     char *endptr;
     strtod(...,&endptr);
     assert(*endptr == 0);
   }
   /* no use of endptr */
   if(baz) {
     strtod(...,&endptr);
     assert(*endptr == 0);
   }
   /* no use of endptr */
 }
 }}}
 so is correct code and contains no bug. I looked into it a bit more and
 more proposed solution is probably too radical. There are other warnings-
 turned-into-errors later on, in particular also one about const-casts in
 free()'s argument which I can never remove. Essentially what happens is
 that one has:
 {{{
 struct blah {
   const char *uname;
 };
 void somefunc(struct blah* b) {
   free((void*)b->uname);
 }
 }}}
 which triggers the warning since free takes a non-const argument (even
 though you cannot use the data pointed to by the pointer afterwards
 anyway).

 Setting CFLAGS seems to just overwrite the CFLAGS that configure would
 use. Does anyone know how to append to the CFLAGS that configure
 constructs? Something like and --additional-cflags option?


 I attach a patch to PAPI and its configure.sh that patches the affected
 source files (there are multiple other warnings that were turned into
 errors) during the configuration phase.

 I am not sure if newer versions of PAPI compile successfully with gcc
 4.8.1 or not.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1459#comment:3>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list