@@ -17,29 +17,8 @@ struct alignas(16384) larry {
17
17
18
18
bool misaligned = false ;
19
19
20
- void grandchild (void ) {
21
- larry l2;
22
- uint alignment = (unsigned long )&l2 % alignof (larry);
23
- if (alignment != 0 )
24
- misaligned = true ;
25
-
26
- printf (" Grandchild: address modulo alignment %u\n " , alignment);
27
- }
28
-
29
- // Even if the FakeStack frame is aligned by chance to 16384, we can use an
30
- // intervening stack frame to knock it out of alignment.
31
- void child (void ) {
32
- page p1;
33
- uint alignment = (unsigned long )&p1 % alignof (page);
34
- printf (" Child: address modulo alignment is %u\n " , alignment);
35
- if (alignment != 0 )
36
- misaligned = true ;
37
-
38
- grandchild ();
39
- }
40
-
41
20
// Check whether the FakeStack frame is sufficiently aligned. Alignment can
42
- // happen by chance, so try this on many threads if you don't want
21
+ // happen by chance, so try this on many threads.
43
22
void *Thread (void *unused) {
44
23
larry l1;
45
24
uint alignment = (unsigned long )&l1 % alignof (larry);
@@ -56,12 +35,12 @@ int main(int argc, char **argv) {
56
35
pthread_attr_t attr;
57
36
pthread_attr_init (&attr);
58
37
59
- pthread_t t[10 ];
60
- for (int i = 0 ; i < 10 ; i++) {
38
+ pthread_t t[32 ];
39
+ for (int i = 0 ; i < 32 ; i++) {
61
40
pthread_create (&t[i], &attr, Thread, 0 );
62
41
}
63
42
pthread_attr_destroy (&attr);
64
- for (int i = 0 ; i < 10 ; i++) {
43
+ for (int i = 0 ; i < 32 ; i++) {
65
44
pthread_join (t[i], 0 );
66
45
}
67
46
0 commit comments