aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C
diff options
context:
space:
mode:
authorBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
committerBen Cheng <bccheng@google.com>2014-03-25 22:37:19 -0700
commit1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch)
treec607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C
parent283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff)
downloadtoolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2
toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C')
-rw-r--r--gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C78
1 files changed, 78 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C b/gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C
new file mode 100644
index 000000000..6a176b624
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/g++.dg/ext/packed6.C
@@ -0,0 +1,78 @@
+// PR c++/15209
+// { dg-options "-w" }
+
+__extension__ typedef __SIZE_TYPE__ size_t;
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+__extension__ typedef unsigned long long int uint64_t;
+
+typedef uint8_t u8;
+typedef uint16_t u16;
+typedef uint32_t u32;
+typedef uint64_t u64;
+
+struct MAGIC {u8 magic[8];} __attribute__ ((packed));
+struct PACKETTYPE {u8 type[16];} __attribute__ ((packed));
+
+
+typedef u16 leu16;
+typedef u32 leu32;
+typedef u64 leu64;
+
+class MD5Hash
+{
+public:
+
+ MD5Hash(void) {};
+
+ void *print(void) const;
+ MD5Hash(const MD5Hash &other);
+ MD5Hash& operator=(const MD5Hash &other);
+
+public:
+ u8 hash[16];
+};
+
+struct PACKET_HEADER
+{
+
+ MAGIC magic;
+ leu64 length;
+ MD5Hash hash;
+ MD5Hash setid;
+ PACKETTYPE type;
+} __attribute__ ((packed));
+
+
+struct MAINPACKET
+{
+ PACKET_HEADER header;
+
+ leu64 blocksize;
+ leu32 recoverablefilecount;
+ MD5Hash fileid[0];
+
+
+} __attribute__ ((packed));
+
+struct CriticalPacket
+{
+ u8 *packetdata;
+ size_t packetlength;
+};
+
+class MainPacket : public CriticalPacket
+{
+ const MD5Hash& SetId(void) const;
+
+ u64 blocksize;
+ u32 totalfilecount;
+ u32 recoverablefilecount;
+};
+
+inline const MD5Hash& MainPacket::SetId(void) const
+{
+ return ((const MAINPACKET*)packetdata)->header.setid;
+}