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"))); elf_get_dynamic_info(struct link_map * l)19static 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 foo(void)32foo (void) 33 { 34 elf_get_dynamic_info (&_dl_rtld_map); 35 } 36