// RUN: %clang_cc1 %s -emit-llvm -g -o /dev/null

typedef long unsigned int size_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;
typedef uint16_t Elf64_Half;
typedef uint32_t Elf64_Word;
typedef uint64_t Elf64_Xword;
typedef uint64_t Elf64_Addr;
typedef uint64_t Elf64_Off;
typedef struct
{
  Elf64_Word p_type;
  Elf64_Off p_offset;
  Elf64_Addr p_vaddr;
  Elf64_Xword p_align;
}
Elf64_Phdr;
struct dl_phdr_info
{
  const char *dlpi_name;
  const Elf64_Phdr *dlpi_phdr;
  Elf64_Half dlpi_phnum;
  unsigned long long int dlpi_adds;
};
typedef unsigned _Unwind_Ptr;
struct object
{
  union
  {
    const struct dwarf_fde *single;
    struct dwarf_fde **array;
    struct fde_vector *sort;
  }
  u;
  union
  {
    struct
    {
    }
    b;
  }
  s;
  struct object *next;
};
typedef int sword;
typedef unsigned int uword;
struct dwarf_fde
{
  uword length;
  sword CIE_delta;
  unsigned char pc_begin[];
};
typedef struct dwarf_fde fde;
struct unw_eh_callback_data
{
  const fde *ret;
  struct frame_hdr_cache_element *link;
}
frame_hdr_cache[8];

_Unwind_Ptr
base_from_cb_data (struct unw_eh_callback_data *data)
{
}

void
_Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr)
{
  const unsigned char *p;
  const struct unw_eh_frame_hdr *hdr;
  struct object ob;
}
