(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
reload-valid-spoff.c
       1  /* { dg-do compile } */
       2  /* { dg-require-effective-target lp64 } */
       3  /* { dg-options "-O2 -mcmodel=large -fno-builtin -fno-pie" }  */
       4  /* { dg-skip-if "-mcmodel=large -fPIC not currently supported" { aarch64-*-* }  { "-fPIC" } { "" } } */
       5  
       6  typedef long unsigned int size_t;
       7  typedef unsigned short int sa_family_t;
       8  
       9  struct sockaddr
      10  {
      11    sa_family_t sa_family;
      12    char sa_data[14];
      13  };
      14  struct arpreq
      15  {
      16    int arp_flags;
      17    struct sockaddr arp_netmask;
      18  };
      19  typedef struct _IO_FILE FILE;
      20  extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
      21  extern void *memset (void *s, int c, size_t n);
      22  extern void *memcpy (void *dest, const void *src, size_t n);
      23  extern int fprintf (FILE *stream, const char *format, ...);
      24  extern char * safe_strncpy (char *dst, const char *src, size_t size);
      25  extern size_t strlen (const char *s);
      26  extern struct _IO_FILE *stderr;
      27  extern int optind;
      28  struct aftype {
      29    int (*input) (int type, char *bufp, struct sockaddr *);
      30  };
      31  struct aftype *ap;
      32  static int arp_set(char **args)
      33  {
      34    char host[128];
      35    struct arpreq req;
      36    struct sockaddr sa;
      37    memset((char *) &req, 0, sizeof(req));
      38    if (*args == ((void *)0)) {
      39      fprintf(stderr, ("arp: need host name\n"));
      40    }
      41    safe_strncpy(host, *args++, (sizeof host));
      42    if (ap->input(0, host, &sa) < 0) {
      43    }
      44    while (*args != ((void *)0)) {
      45      if (!__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*args) && __builtin_constant_p ("netmask") && (__s1_len = strlen (*args), __s2_len = strlen ("netmask"), (!((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("netmask") + 1) - (size_t)(const void *)("netmask") == 1) || __s2_len >= 4)) ? __builtin_strcmp (*args, "netmask") : (__builtin_constant_p (*args) && ((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) && (__s1_len = strlen (*args), __s1_len < 4) ? (__builtin_constant_p ("netmask") && ((size_t)(const void *)(("netmask") + 1) - (size_t)(const void *)("netmask") == 1) ? __builtin_strcmp (*args, "netmask") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("netmask"); register int __result = (((__const unsigned char *) (__const char *) (*args))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*args))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*args))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*args))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("netmask") && ((size_t)(const void *)(("netmask") + 1) - (size_t)(const void *)("netmask") == 1) && (__s2_len = strlen ("netmask"), __s2_len < 4) ? (__builtin_constant_p (*args) && ((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) ? __builtin_strcmp (*args, "netmask") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (*args); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("netmask"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("netmask"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("netmask"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("netmask"))[3]); } } __result; }))) : __builtin_strcmp (*args, "netmask")))); })) {
      46        if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (*args) && __builtin_constant_p ("255.255.255.255") && (__s1_len = strlen (*args), __s2_len = strlen ("255.255.255.255"), (!((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("255.255.255.255") + 1) - (size_t)(const void *)("255.255.255.255") == 1) || __s2_len >= 4)) ? __builtin_strcmp (*args, "255.255.255.255") : (__builtin_constant_p (*args) && ((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) && (__s1_len = strlen (*args), __s1_len < 4) ? (__builtin_constant_p ("255.255.255.255") && ((size_t)(const void *)(("255.255.255.255") + 1) - (size_t)(const void *)("255.255.255.255") == 1) ? __builtin_strcmp (*args, "255.255.255.255") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("255.255.255.255"); register int __result = (((__const unsigned char *) (__const char *) (*args))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*args))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (*args))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (*args))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("255.255.255.255") && ((size_t)(const void *)(("255.255.255.255") + 1) - (size_t)(const void *)("255.255.255.255") == 1) && (__s2_len = strlen ("255.255.255.255"), __s2_len < 4) ? (__builtin_constant_p (*args) && ((size_t)(const void *)((*args) + 1) - (size_t)(const void *)(*args) == 1) ? __builtin_strcmp (*args, "255.255.255.255") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (*args); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("255.255.255.255"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("255.255.255.255"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("255.255.255.255"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("255.255.255.255"))[3]); } } __result; }))) : __builtin_strcmp (*args, "255.255.255.255")))); }) != 0) {
      47  	memcpy((char *) &req.arp_netmask, (char *) &sa,
      48  	       sizeof(struct sockaddr));
      49        }
      50      }
      51    }
      52  }
      53  static int arp_file(char *name)
      54  {
      55    char buff[1024];
      56    char *sp, *args[32];
      57    int linenr, argc;
      58    FILE *fp;
      59    while (fgets(buff, sizeof(buff), fp) != (char *) ((void *)0)) {
      60      if (arp_set(args) != 0)
      61        fprintf(stderr, ("arp: cannot set entry on line %u on line %u of etherfile %s !\n"),
      62  	      linenr, name);
      63    }
      64  }
      65  int main(int argc, char **argv)
      66  {
      67    int i, lop, what;
      68    switch (what) {
      69    case 0:
      70      what = arp_file(argv[optind] ? argv[optind] : "/etc/ethers");
      71    }
      72  }