| /* { dg-do compile { target ia64-*-* } } */ |
| /* { dg-options "-O2 -fpic" } */ |
| /* { dg-final { scan-assembler-not "@ltoffx" } } */ |
| |
| /* Test imitates early ld.so setup in glibc |
| where no dynamic relocations must be present. */ |
| |
| struct rtld_global |
| { |
| long *p[77]; |
| }; |
| |
| struct rtld_global _rtld_local __attribute__ ((visibility ("hidden"), section (".sdata"))); |
| |
| static void __attribute__ ((unused, noinline)) |
| elf_get_dynamic_info (struct rtld_global * g, long * dyn) |
| { |
| long **info = g->p; |
| |
| info[(0x6ffffeff - *dyn) + 66] = dyn; |
| } |
| |
| void __attribute__ ((unused, noinline)) |
| _dl_start (long * dyn) |
| { |
| elf_get_dynamic_info(&_rtld_local, dyn); |
| } |