20020404-1.c: New test.
authorDavid S. Miller <davem@redhat.com>
Thu, 4 Apr 2002 23:54:01 +0000 (15:54 -0800)
committerDavid S. Miller <davem@gcc.gnu.org>
Thu, 4 Apr 2002 23:54:01 +0000 (15:54 -0800)
2002-04-04  David S. Miller  <davem@redhat.com>

* gcc.c-torture/execute/20020404-1.c: New test.

From-SVN: r51889

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20020404-1.c [new file with mode: 0644]

index 64ff05f875b1c4d0b1ad417ac979878ee1a9d9d7..7b92bce96e6d760a1e644ea31b869367e02a9227 100644 (file)
@@ -1,3 +1,7 @@
+2002-04-04  David S. Miller  <davem@redhat.com>
+
+       * gcc.c-torture/execute/20020404-1.c: New test.
+
 2002-04-04  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/6123
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020404-1.c b/gcc/testsuite/gcc.c-torture/execute/20020404-1.c
new file mode 100644 (file)
index 0000000..dc62b15
--- /dev/null
@@ -0,0 +1,102 @@
+/* Extracted from GDB sources. */
+
+typedef long long bfd_signed_vma;
+typedef bfd_signed_vma file_ptr;
+
+typedef enum bfd_boolean {false, true} boolean;
+
+typedef unsigned long long bfd_size_type;
+
+typedef unsigned int flagword;
+
+typedef unsigned long long CORE_ADDR;
+typedef unsigned long long bfd_vma;
+
+struct bfd_struct {
+       int x;
+};
+
+struct asection_struct {
+  unsigned int user_set_vma : 1;
+  bfd_vma vma;
+  bfd_vma lma;
+  unsigned int alignment_power;
+  unsigned int entsize;
+};
+
+typedef struct bfd_struct bfd;
+typedef struct asection_struct asection;
+
+static bfd *
+bfd_openw_with_cleanup (char *filename, const char *target, char *mode);
+
+static asection *
+bfd_make_section_anyway (bfd *abfd, const char *name);
+
+static boolean
+bfd_set_section_size (bfd *abfd, asection *sec, bfd_size_type val);
+
+static boolean
+bfd_set_section_flags (bfd *abfd, asection *sec, flagword flags);
+
+static boolean
+bfd_set_section_contents (bfd *abfd, asection *section, void * data, file_ptr offset, bfd_size_type count);
+
+static void
+dump_bfd_file (char *filename, char *mode,
+               char *target, CORE_ADDR vaddr,
+               char *buf, int len)
+{
+  bfd *obfd;
+  asection *osection;
+
+  obfd = bfd_openw_with_cleanup (filename, target, mode);
+  osection = bfd_make_section_anyway (obfd, ".newsec");
+  bfd_set_section_size (obfd, osection, len);
+  (((osection)->vma = (osection)->lma= (vaddr)), ((osection)->user_set_vma = (boolean)true), true);
+  (((osection)->alignment_power = (0)),true);
+  bfd_set_section_flags (obfd, osection, 0x203);
+  osection->entsize = 0;
+  bfd_set_section_contents (obfd, osection, buf, 0, len);
+}
+
+static bfd *
+bfd_openw_with_cleanup (char *filename, const char *target, char *mode)
+{
+       static bfd foo_bfd = { 0 };
+       return &foo_bfd;
+}
+
+static asection *
+bfd_make_section_anyway (bfd *abfd, const char *name)
+{
+       static asection foo_section = { false, 0x0, 0x0, 0 };
+
+       return &foo_section;
+}
+
+static boolean
+bfd_set_section_size (bfd *abfd, asection *sec, bfd_size_type val)
+{
+       return true;
+}
+
+static boolean
+bfd_set_section_flags (bfd *abfd, asection *sec, flagword flags)
+{
+}
+
+static boolean
+bfd_set_section_contents (bfd *abfd, asection *section, void * data, file_ptr offset, bfd_size_type count)
+{
+       if (count != (bfd_size_type)0x1eadbeef)
+               abort();
+}
+
+static char hello[] = "hello";
+
+int main(void)
+{
+       dump_bfd_file(0, 0, 0, (CORE_ADDR)0xdeadbeef, hello, (int)0x1eadbeef);
+       exit(0);
+}