modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/pr67037.c (about)

     1  long (*extfunc)();
     2  
     3  static inline void lstrcpynW( short *d, const short *s, int n )
     4  {
     5      unsigned int count = n;
     6  
     7      while ((count > 1) && *s)
     8      {
     9          count--;
    10          *d++ = *s++;
    11      }
    12      if (count) *d = 0;
    13  }
    14  
    15  int __attribute__((noinline,noclone))
    16  badfunc(int u0, int u1, int u2, int u3,
    17    short *fsname, unsigned int fsname_len)
    18  {
    19      static const short ntfsW[] = {'N','T','F','S',0};
    20      char superblock[2048+3300];
    21      int ret = 0;
    22      short *p;
    23  
    24      if (extfunc())
    25          return 0;
    26      p = (void *)extfunc();
    27      if (p != 0)
    28          goto done;
    29  
    30      extfunc(superblock);
    31  
    32      lstrcpynW(fsname, ntfsW, fsname_len);
    33  
    34      ret = 1;
    35  done:
    36      return ret;
    37  }
    38  
    39  static long f()
    40  {
    41      return 0;
    42  }
    43  
    44  int main()
    45  {
    46      short buf[6];
    47      extfunc = f;
    48      return !badfunc(0, 0, 0, 0, buf, 6);
    49  }