diff options
author | Duncan Sands <baldrick@free.fr> | 2009-01-21 11:51:17 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2009-01-21 11:51:17 +0000 |
commit | 8f7c2e67693faa76065749652ed027b32e8212b2 (patch) | |
tree | 7e2425bb69c6d4a88b3467751faa23c2c3f1bdf2 | |
parent | bf0fb175abe02587742e562260380d2f0b5e4d42 (diff) | |
download | external_llvm-8f7c2e67693faa76065749652ed027b32e8212b2.zip external_llvm-8f7c2e67693faa76065749652ed027b32e8212b2.tar.gz external_llvm-8f7c2e67693faa76065749652ed027b32e8212b2.tar.bz2 |
This was causing invalid memory accesses when
generating debug info in the compiler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62684 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/FrontendC/2009-01-21-InvalidIterator.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/test/FrontendC/2009-01-21-InvalidIterator.c b/test/FrontendC/2009-01-21-InvalidIterator.c new file mode 100644 index 0000000..310ea3b --- /dev/null +++ b/test/FrontendC/2009-01-21-InvalidIterator.c @@ -0,0 +1,74 @@ +// RUN: %llvmgcc %s -S -g + +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; +} |