summaryrefslogtreecommitdiff
path: root/test/FrontendC/2009-01-21-InvalidIterator.c
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2009-01-21 11:51:17 +0000
committerDuncan Sands <baldrick@free.fr>2009-01-21 11:51:17 +0000
commit8f7c2e67693faa76065749652ed027b32e8212b2 (patch)
tree7e2425bb69c6d4a88b3467751faa23c2c3f1bdf2 /test/FrontendC/2009-01-21-InvalidIterator.c
parentbf0fb175abe02587742e562260380d2f0b5e4d42 (diff)
downloadllvm-8f7c2e67693faa76065749652ed027b32e8212b2.tar.gz
llvm-8f7c2e67693faa76065749652ed027b32e8212b2.tar.bz2
llvm-8f7c2e67693faa76065749652ed027b32e8212b2.tar.xz
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
Diffstat (limited to 'test/FrontendC/2009-01-21-InvalidIterator.c')
-rw-r--r--test/FrontendC/2009-01-21-InvalidIterator.c74
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 0000000000..310ea3bfa1
--- /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;
+}