http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54209
--- Comment #4 from chaoyingfu at gcc dot gnu.org <chaoyingfu at gcc dot gnu.org> 2012-08-09 18:45:41 UTC --- (In reply to comment #3) > (In reply to comment #2) > > MIPS provides a version of link.h in Android NDK as follows: > > Ex: > > From android-ndk-r8b/platforms/android-9/arch-mips/usr/include# cat link.h > > /* > > For building unwind-dw2-fde-glibc.c for MIPS frame unwinding, > > we need to have <link.h> that defines struct dl_phdr_info, > > ELFW(type), and dl_iterate_phdr(). > > */ > > > > #include <sys/types.h> > > #include <elf.h> > > > > struct dl_phdr_info > > { > > Elf32_Addr dlpi_addr; > > const char *dlpi_name; > > const Elf32_Phdr *dlpi_phdr; > > Elf32_Half dlpi_phnum; > > }; > > > > #if _MIPS_SZPTR == 32 > > #define ElfW(type) Elf32_##type > > #elif _MIPS_SZPTR == 64 > > #define ElfW(type) Elf64_##type > > #endif > > > > int > > dl_iterate_phdr(int (*cb)(struct dl_phdr_info *info, size_t size, void > > *data), > > void *data); > > > > For x86, you can create link.h as well. Or we can guard this define with > > MIPS targets. > > Why isn't link.h in AOSP Bionic C library? ARM doesn't use eh_frame, so there is no need to create link.h at the beginning for the Android project, I guess. For MIPS, we create our own link.h to work with eh_frame unwinding. Thanks!