blob: e58ed72b4c17c132b3deac9dfbd98b2a4a58e292 [file] [log] [blame]
// RUN: test.sh -p -t %t %s
/* exactcheck() move pointer in and out of bounds test */
#include <stdio.h>
#include <stdlib.h>
int
main (int argc, char ** argv) {
char tst_array[] = "test array";
char * p0;
char * p1;
char * p2;
char * p3;
char * p4;
char * p5;
char * p6;
fprintf(stderr, "setting p0 = &(tst_array[0])\n");
p0 = &(tst_array[0]);
fprintf(stderr, "setting p1 = p0 + 128\n");
p1 = p0 + 128;
fprintf(stderr, "setting p2 = p1 + 128\n");
p2 = p1 + 128;
fprintf(stderr, "setting p3 = p2 - 256\n");
p3 = p2 - 256;
fprintf(stderr, "setting p4 = p1 - 128\n");
p4 = p1 - 128;
fprintf(stderr, "setting p5 = p2 - 512\n");
p5 = p2 - 512;
fprintf(stderr, "setting p6 = p5 + 256\n");
p6 = p5 + 256;
fprintf(stdout, "p0 = 0x%llx\n", (unsigned long long)p0);
fprintf(stdout, "p1 = 0x%llx -- should equal p0 + 0x%x\n",
(unsigned long long)p1, (unsigned)128);
fprintf(stdout, "p2 = 0x%llx -- should equal p0 + 0x%x\n",
(unsigned long long)p2, (unsigned)256);
fprintf(stdout, "p3 = 0x%llx -- should equal p0\n",
(unsigned long long)p3);
fprintf(stdout, "p4 = 0x%llx -- should equal p0\n",
(unsigned long long)p4);
fprintf(stdout, "p5 = 0x%llx -- should equal p0 - 0x%x\n",
(unsigned long long)p5, (unsigned)256);
fprintf(stdout, "p6 = 0x%llx -- should equal p0\n",
(unsigned long long)p6);
fprintf(stdout, "*p0 = \"%s\"\n", p0);
fprintf(stdout, "*p3 = \"%s\"\n", p3);
fprintf(stdout, "*p4 = \"%s\"\n", p4);
fprintf(stdout, "*p6 = \"%s\"\n", p6);
fflush (stdout);
return 0;
}