Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / native_client / tests / barebones / barebones_negindex.c
1 /*
2  * Copyright 2010 The Native Client Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  */
6
7 /*
8  * This test checks to see if using negative indexes cause problems.
9  * (Regression test for an X86-64 sandboxing bug)
10  */
11
12 #include "barebones.h"
13
14 int s = 110;
15 volatile unsigned arr[110];
16 void setarray(void);
17 void checkarray(void);
18
19 int main(int argc, char* argv[]) {
20   setarray();
21   checkarray();
22   return 0;     /* unreachable */
23 }
24
25 void setarray(void) {
26   register int i;
27   for (i = s; i > 0; i--) {
28     arr[s - i] = (i%2 ? 1 : 0);
29   }
30 }
31
32 void checkarray(void) {
33   register int i;
34   int sum = 0;
35
36   for (i = 0; i > -s; i--) {
37     sum += arr[s + i - 1];
38   }
39   NACL_SYSCALL(exit)(sum);
40 }