1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/* { dg-do run } */
/* { dg-options "--embed-dir=${srcdir}/c-c++-common/cpp/embed-dir" } */
/* { dg-additional-options "-std=gnu99" { target c } } */
#if __has_embed (__FILE__ gnu::offset (4 + FOOBAR) limit (3)) != __STDC_EMBED_FOUND__
#error "__has_embed fail"
#endif
#embed <magna-carta.txt> limit(1) gnu::offset (0) prefix(int a = ) suffix (;)
#embed <magna-carta.txt> limit(1) __gnu__::offset (1 * 1) prefix(int b = ) suffix (;)
#embed <magna-carta.txt> limit(1) gnu::__offset__ (1 + 1) prefix(int c = ) suffix (;)
#embed <magna-carta.txt> __limit__(1) __gnu__::__offset__ (1 + (1 \
+ 1)) __prefix__(int d = ) __suffix__ (;)
const unsigned char e[] = {
#embed <magna-carta.txt> limit(5) gnu::offset (999)
};
const unsigned char f[] = {
#embed <magna-carta.txt> limit(7) gnu::offset (998)
};
const unsigned char g[] = {
#embed <magna-carta.txt> limit(8) gnu::offset (998)
};
const unsigned char h[] = {
#embed <magna-carta.txt> limit(8) gnu::offset (997)
};
const unsigned char i[] = {
#embed <magna-carta.txt> limit(9) gnu::offset (997)
};
const unsigned char j[] = {
#embed <magna-carta.txt> limit(30) gnu::offset (990)
};
const unsigned char k[] = {
#embed <magna-carta.txt> limit(26) gnu::offset (992)
};
const unsigned char l[] = {
#embed <magna-carta.txt>
};
const unsigned char m[] = {
#embed <magna-carta.txt> __limit__ (1000) __gnu__::__offset__ (32)
};
#if __has_embed (<magna-carta.txt> limit(5) gnu::offset (999)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(5) gnu::offset (999)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(7) gnu::offset (998)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(8) gnu::offset (998)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(8) gnu::offset (997)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(9) gnu::offset (997)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(30) gnu::offset (990)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(26) gnu::offset (992)) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt>) != __STDC_EMBED_FOUND__ \
|| __has_embed (<magna-carta.txt> limit(26) gnu::offset (992)) != __STDC_EMBED_FOUND__
#error "__has_embed fail"
#endif
#ifdef __cplusplus
#define C "C"
#else
#define C
#endif
extern C void abort (void);
extern C int memcmp (const void *, const void *, __SIZE_TYPE__);
int
main ()
{
if (a != 'H' || b != 'e' || c != 'n' || d != 'r')
abort ();
if (sizeof (e) != 5
|| sizeof (f) != 7
|| sizeof (g) != 8
|| sizeof (h) != 8
|| sizeof (i) != 9
|| sizeof (j) != 30
|| sizeof (k) != 26
|| sizeof (l) < 1032
|| sizeof (m) != 1000)
abort ();
if (memcmp (e, l + 999, 5)
|| memcmp (f, l + 998, 7)
|| memcmp (g, l + 998, 8)
|| memcmp (h, l + 997, 8)
|| memcmp (i, l + 997, 9)
|| memcmp (j, l + 990, 30)
|| memcmp (k, l + 992, 26)
|| memcmp (m, l + 32, 1000))
abort ();
if (l[0] != 'H' || l[1] != 'e' || l[2] != 'n' || l[3] != 'r')
abort ();
}
|