aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/cpp/embed-15.c
blob: c12aeb31db5343cdbeefd7744e024268c1762bf5 (plain)
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 ();
}