On Wed, Aug 15, 2018 at 03:52:33PM -0400, David Edelsohn wrote:
> You must manually insert the additional test lines into the appropriate
> file in fixincludes/tests/base and then retest.
> 
> Please see step (6) in fixincludes/README

Ok, thanks. fixincludes/tests/res/stdlib.h has:
  #if defined( HPUX_LONG_DOUBLE_CHECK )
  extern long double strtold(const char *, char **);

  #endif  /* HPUX_LONG_DOUBLE_CHECK */

  #if defined( HPUX_LONG_DOUBLE_2_CHECK )
  #  if !defined(__ia64) || !defined(_PROTOTYPES) || 
defined(_LONG_DOUBLE_STRUCT)
 
  #endif  /* HPUX_LONG_DOUBLE_2_CHECK */

The body of HPUX_LONG_DOUBLE_2_CHECK is no longer valid with my fix.
I'm thinking it should look like HPUX_LONG_DOUBLE_CHECK so I modified
HPUX_LONG_DOUBLE_2_CHECK to look like HPUX_LONG_DOUBLE_CHECK.

However, when I run "make check", fixincludes/tests/res/stdlib.h has:
  #if defined( HPUX_LONG_DOUBLE_2_CHECK )

  #endif  /* HPUX_LONG_DOUBLE_2_CHECK */

So, I modified test_text to the following:
    test_text = "#  ifndef _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "     typedef struct {\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "     } long_double;\n"
                "#  endif /* _LONG_DOUBLE */\n"
                "extern long_double strtold(const char *, char **);\n";
rather than:
    test_text = "#  ifndef _LONG_DOUBLE\n"
                "#    define _LONG_DOUBLE\n"
                "     typedef struct {\n"
                "       unsigned int word1, word2, word3, word4;\n"
                "     } long_double;\n"
                "extern long_double strtold(const char *, char **);\n"
                "#  endif /* _LONG_DOUBLE */\n";

and modified fixincludes/tests/base/stdlib.h to:
  #if defined( HPUX_LONG_DOUBLE_CHECK )
  extern long double strtold(const char *, char **);

  #endif  /* HPUX_LONG_DOUBLE_CHECK */


  #if defined( HPUX_LONG_DOUBLE_2_CHECK )
  extern long double strtold(const char *, char **);

  #endif  /* HPUX_LONG_DOUBLE_2_CHECK */

I don't know why the change to test_text causes "make check" to
succeed though.

> Thanks, David
> 
> 
> 
> 
> On Wed, Aug 15, 2018 at 3:46 PM Albert Chin <g...@mlists.thewrittenword.com>
> wrote:
> 
> > Hi. I've come up with a fixincl fix for PR86599 but "make check" in
> > the fixincludes directory does not work and I do not know why. I know
> > just enough fixincl-fu to produce a patch for this issue. I am trying
> > to convert a chunk of code in stdlib on HP-UX 11.31/PA:
> >
> > #  ifndef _LONG_DOUBLE
> > #    define _LONG_DOUBLE
> > #  if !defined(__ia64) || !defined(_PROTOTYPES) ||
> > defined(_LONG_DOUBLE_STRUCT)
> > typedef struct {
> >         uint32_t word1, word2, word3, word4;
> >         } long_double;
> > extern long_double strtold __((const char * __restrict, char **
> > __restrict));
> > #  else /* !__ia64 || !_PROTOTYPES || _LONG_DOUBLE_STRUCT */
> > #    ifdef _INCLUDE_HPUX_SOURCE
> > typedef long double long_double;
> > #    endif /* _INCLUDE_HPUX_SOURCE */
> > extern long double strtold __((const char * __restrict, char **
> > __restrict));
> > #  endif /* !__ia64 ||!_PROTOTYPES ||_LONG_DOUBLE_STRUCT */
> > #endif /* _LONG_DOUBLE */
> >
> > to:
> >
> > extern long double strtold(const char *, char **);
> >
> > I am doing this by fixing hpux_long_double_2 so it now looks like:
> > fix = {
> >     hackname  = hpux_long_double_2;
> >     mach      = "hppa*-*-hpux11.3*";
> >     files     = stdlib.h;
> >     select    = "extern[ \t]long_double[ \t]strtold";
> >     bypass    = "long_double_t";
> >     sed       = "/^#[ \t]*ifndef _LONG_DOUBLE/,"
> >                 "/\\/\\* _LONG_DOUBLE \\*\\//c\\\n"
> >                 "extern long double strtold(const char *, char **);\n";
> >     sed       = "s/long_double/long double/g";
> >
> >     test_text = "#  ifndef _LONG_DOUBLE\n"
> >                 "#    define _LONG_DOUBLE\n"
> >                 "     typedef struct {\n"
> >                 "       unsigned int word1, word2, word3, word4;\n"
> >                 "     } long_double;\n"
> >                 "extern long_double strtold(const char *, char **);\n"
> >                 "#  endif /* _LONG_DOUBLE */\n";
> > };
> >
> > This works but "make check" returns:
> >
> > stdlib.h /opt/build/gcc-8.2.0/fixincludes/tests/base/stdlib.h differ: char
> > 1475, line 59
> > *** stdlib.h    Wed Aug 15 19:38:37 2018
> > --- /opt/build/gcc-8.2.0/fixincludes/tests/base/stdlib.h        Thu Feb 22
> > 16:12:26 2018
> > ***************
> > *** 56,61 ****
> > --- 56,62 ----
> >
> >
> >   #if defined( HPUX_LONG_DOUBLE_2_CHECK )
> > + #  if !defined(__ia64) || !defined(_PROTOTYPES) ||
> > defined(_LONG_DOUBLE_STRUCT)
> >
> >   #endif  /* HPUX_LONG_DOUBLE_2_CHECK */
> >
> > There were fixinclude test FAILURES
> >
> > Any ideas?
> >
> > --
> > albert chin (ch...@thewrittenword.com)
> >

-- 
albert chin (ch...@thewrittenword.com)

Reply via email to