| // RUN: %clang_cfi -lm -o %t1 %s |
| // RUN: %t1 c 1 2>&1 | FileCheck --check-prefix=CFI %s |
| // RUN: %t1 s 2 2>&1 | FileCheck --check-prefix=CFI %s |
| |
| // This test uses jump tables containing PC-relative references to external |
| // symbols, which the Mach-O object writer does not currently support. |
| // XFAIL: darwin |
| |
| #include <stdlib.h> |
| #include <stdio.h> |
| #include <math.h> |
| |
| int main(int argc, char **argv) { |
| // CFI: 1 |
| fprintf(stderr, "1\n"); |
| |
| double (*fn)(double); |
| if (argv[1][0] == 's') |
| fn = sin; |
| else |
| fn = cos; |
| |
| fn(atof(argv[2])); |
| |
| // CFI: 2 |
| fprintf(stderr, "2\n"); |
| } |