2010-05-01 01:42:30 +08:00
|
|
|
// RUN: %llvmgcc %s -S -g -o /dev/null
|
2009-01-21 19:51:17 +08:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|