1  /* { dg-do compile { target { ! ia32 } } } */
       2  /* { dg-require-effective-target maybe_x32 } */
       3  /* { dg-require-effective-target fpic } */
       4  /* { dg-options "-O2 -mx32 -maddress-mode=long -fpic" } */
       5  
       6  typedef int int32_t;
       7  typedef unsigned int uint32_t;
       8  typedef int32_t Elf32_Sword;
       9  typedef struct
      10  {
      11    Elf32_Sword d_tag;
      12  } Elf32_Dyn;
      13  struct link_map
      14  {
      15    Elf32_Dyn *l_ld;
      16    Elf32_Dyn *l_info[34];
      17  };
      18  extern struct link_map _dl_rtld_map __attribute__ ((visibility ("hidden")));
      19  static void elf_get_dynamic_info (struct link_map *l)
      20  {
      21    Elf32_Dyn *dyn = l->l_ld;
      22    Elf32_Dyn **info;
      23    info = l->l_info;
      24    while (dyn->d_tag != 0)
      25      {
      26        if ((uint32_t) (0x6ffffeff - dyn->d_tag) < 11)
      27  	info[0x6ffffeff - dyn->d_tag + 12] = dyn;
      28        ++dyn;
      29      }
      30  }
      31  void
      32  foo (void)
      33  {
      34    elf_get_dynamic_info (&_dl_rtld_map);
      35  }