search for: fptr_t

Displaying 20 results from an estimated 24 matches for "fptr_t".

2018 Apr 09
2
ThinLTO + CFI
...constant, is lost under ThinLTO, and the inlined copy of b.c:get_fptr() in a.c does not eliminate the conditional, which, for CFI purposes requires to generate a type check/jump table. I was wondering if there was a way to mitigate this limitation. a.c ============================= typedef int (*fptr_t) (void); fptr_t get_fptr(); int main(int argc, char *argv[]) { fptr_t fp = get_fptr(); return fp(); } b.c ============================= typedef int (*fptr_t) (void); int foo(void) { return 11; } int bar(void) { return 22; } static fptr_t fptr = bar; static int i = 53; fptr_t get_fptr(void)...
2018 Apr 27
3
ThinLTO + CFI
...if there’s a way to delay renaming until ThinLTO > backend type check lowering pass. It would help with solving both problems. > > Thanks. > Dmitry. > > > > > >>>> > a.c >>>> > ============================= >>>> > typedef int (*fptr_t) (void); >>>> > fptr_t get_fptr(); >>>> > int main(int argc, char *argv[]) >>>> > { >>>> > fptr_t fp = get_fptr(); >>>> > return fp(); >>>> > } >>>> > >>>> > >>>> &g...
2018 Apr 27
0
ThinLTO + CFI
..., !nosanitize !9 unreachable, !nosanitize !9 ; <label>:10: ; preds = %2 %11 = tail call i32 %5() #5 ret i32 %11 } . . . declare hidden i32 @foo() #3 declare hidden i32 @bar() #3 —————————test case--------------- b.c ================= typedef int (*fptr_t) (void); fptr_t get_fptr(); extern int i; int main(int argc, char *argv[]) { i = argc - 2; fptr_t fp = get_fptr(); return fp(); } v.c ================ int i; typedef int (*fptr_t) (void); int foo(void) { return 11; } int bar(void) { return 22; } fptr_t get_fptr(void) { return (i >= 0)...
2018 Apr 30
4
ThinLTO + CFI
...gt;:10: ; preds = %2 > %11 = tail call i32 %5() #5 > ret i32 %11 > } > > . . . > declare hidden i32 @foo() #3 > declare hidden i32 @bar() #3 > > > —————————test case--------------- > b.c > ================= > typedef int (*fptr_t) (void); > fptr_t get_fptr(); > extern int i; > > int main(int argc, char *argv[]) > { > i = argc - 2; > fptr_t fp = get_fptr(); > return fp(); > } > > v.c > ================ > int i; > typedef int (*fptr_t) (void); > int foo(void) { return 11; } &gt...
2018 May 14
1
ThinLTO + CFI
...:10: ; preds = %2 > %11 = tail call i32 %5() #5 > ret i32 %11 > } > > . . . > declare hidden i32 @foo() #3 > declare hidden i32 @bar() #3 > > > —————————test case--------------- > b.c > ================= > typedef int (*fptr_t) (void); > fptr_t get_fptr(); > extern int i; > > int main(int argc, char *argv[]) > { > i = argc - 2; > fptr_t fp = get_fptr(); > return fp(); > } > v.c > ================ > int i; > typedef int (*fptr_t) (void); > int foo(void) { return 11; } > in...
2018 Apr 17
0
ThinLTO + CFI
...TO, and the inlined copy of b.c:get_fptr() in a.c does not eliminate the conditional, which, for CFI purposes requires to generate a type check/jump table. > > I was wondering if there was a way to mitigate this limitation. > > a.c > ============================= > typedef int (*fptr_t) (void); > fptr_t get_fptr(); > int main(int argc, char *argv[]) > { > fptr_t fp = get_fptr(); > return fp(); > } > > > b.c > ============================= > typedef int (*fptr_t) (void); > int foo(void) { return 11; } > int bar(void) { return 22; } >...
2018 Apr 17
3
ThinLTO + CFI
...tr() in > a.c does not eliminate the conditional, which, for CFI purposes requires to > generate a type check/jump table. > > > > I was wondering if there was a way to mitigate this limitation. > > > > a.c > > ============================= > > typedef int (*fptr_t) (void); > > fptr_t get_fptr(); > > int main(int argc, char *argv[]) > > { > > fptr_t fp = get_fptr(); > > return fp(); > > } > > > > > > b.c > > ============================= > > typedef int (*fptr_t) (void); > > int foo(voi...
2018 Apr 26
0
ThinLTO + CFI
...d symbols attached to the jump table do not have a matching type. I’m trying to think if there’s a way to delay renaming until ThinLTO backend type check lowering pass. It would help with solving both problems. Thanks. Dmitry. > > a.c > ============================= > typedef int (*fptr_t) (void); > fptr_t get_fptr(); > int main(int argc, char *argv[]) > { > fptr_t fp = get_fptr(); > return fp(); > } > > > b.c > ============================= > typedef int (*fptr_t) (void); > int foo(void) { return 11; } > int bar(void) { return 22; } > &gt...
2018 May 01
0
ThinLTO + CFI
...; %11 = tail call i32 %5() #5 > > ret i32 %11 > > } > > > > . . . > > declare hidden i32 @foo() #3 > > declare hidden i32 @bar() #3 > > > > > > —————————test case--------------- > > b.c > > ================= > > typedef int (*fptr_t) (void); > > fptr_t get_fptr(); > > extern int i; > > > > int main(int argc, char *argv[]) > > { > > i = argc - 2; > > fptr_t fp = get_fptr(); > > return fp(); > > } > > > > v.c > > ================ > > int i; > &gt...
2018 Apr 20
2
ThinLTO + CFI
...ch, for CFI purposes requires to >>> generate a type check/jump table. >>> > >>> > I was wondering if there was a way to mitigate this limitation. >>> > >>> > a.c >>> > ============================= >>> > typedef int (*fptr_t) (void); >>> > fptr_t get_fptr(); >>> > int main(int argc, char *argv[]) >>> > { >>> > fptr_t fp = get_fptr(); >>> > return fp(); >>> > } >>> > >>> > >>> > b.c >>> > ===========...
2018 May 01
2
ThinLTO + CFI
...%11 = tail call i32 %5() #5 > > ret i32 %11 > > } > > > > . . . > > declare hidden i32 @foo() #3 > > declare hidden i32 @bar() #3 > > > > > > —————————test case--------------- > > b.c > > ================= > > typedef int (*fptr_t) (void); > > fptr_t get_fptr(); > > extern int i; > > > > int main(int argc, char *argv[]) > > { > > i = argc - 2; > > fptr_t fp = get_fptr(); > > return fp(); > > } > > > > v.c > > ================ > > int i; > &...
2018 May 01
0
ThinLTO + CFI
...; %11 = tail call i32 %5() #5 > > ret i32 %11 > > } > > > > . . . > > declare hidden i32 @foo() #3 > > declare hidden i32 @bar() #3 > > > > > > —————————test case--------------- > > b.c > > ================= > > typedef int (*fptr_t) (void); > > fptr_t get_fptr(); > > extern int i; > > > > int main(int argc, char *argv[]) > > { > > i = argc - 2; > > fptr_t fp = get_fptr(); > > return fp(); > > } > > > > v.c > > ================ > > int i; > &gt...
2018 May 01
2
ThinLTO + CFI
...> > } > > > > > > . . . > > > declare hidden i32 @foo() #3 > > > declare hidden i32 @bar() #3 > > > > > > > > > —————————test case--------------- > > > b.c > > > ================= > > > typedef int (*fptr_t) (void); > > > fptr_t get_fptr(); > > > extern int i; > > > > > > int main(int argc, char *argv[]) > > > { > > > i = argc - 2; > > > fptr_t fp = get_fptr(); > > > return fp(); > > > } > > > > > >...
2018 May 01
0
ThinLTO + CFI
...gt; > > } > > > > > > . . . > > > declare hidden i32 @foo() #3 > > > declare hidden i32 @bar() #3 > > > > > > > > > —————————test case--------------- > > > b.c > > > ================= > > > typedef int (*fptr_t) (void); > > > fptr_t get_fptr(); > > > extern int i; > > > > > > int main(int argc, char *argv[]) > > > { > > > i = argc - 2; > > > fptr_t fp = get_fptr(); > > > return fp(); > > > } > > > > > > v...
2018 Apr 18
0
ThinLTO + CFI
...nLTO, and the inlined copy of b.c:get_fptr() in a.c does not eliminate the conditional, which, for CFI purposes requires to generate a type check/jump table. > > I was wondering if there was a way to mitigate this limitation. > > a.c > ============================= > typedef int (*fptr_t) (void); > fptr_t get_fptr(); > int main(int argc, char *argv[]) > { > fptr_t fp = get_fptr(); > return fp(); > } > > > b.c > ============================= > typedef int (*fptr_t) (void); > int foo(void) { return 11; } > int bar(void) { return 22; } > &gt...
2018 May 01
2
ThinLTO + CFI
...gt; . . . > > > > declare hidden i32 @foo() #3 > > > > declare hidden i32 @bar() #3 > > > > > > > > > > > > —————————test case--------------- > > > > b.c > > > > ================= > > > > typedef int (*fptr_t) (void); > > > > fptr_t get_fptr(); > > > > extern int i; > > > > > > > > int main(int argc, char *argv[]) > > > > { > > > > i = argc - 2; > > > > fptr_t fp = get_fptr(); > > > > return fp(); > &g...
2018 May 01
0
ThinLTO + CFI
...> . . . > > > > declare hidden i32 @foo() #3 > > > > declare hidden i32 @bar() #3 > > > > > > > > > > > > —————————test case--------------- > > > > b.c > > > > ================= > > > > typedef int (*fptr_t) (void); > > > > fptr_t get_fptr(); > > > > extern int i; > > > > > > > > int main(int argc, char *argv[]) > > > > { > > > > i = argc - 2; > > > > fptr_t fp = get_fptr(); > > > > return fp(); > &gt...
2018 Apr 19
3
ThinLTO + CFI
...iminate the conditional, which, for CFI purposes requires to >> generate a type check/jump table. >> > >> > I was wondering if there was a way to mitigate this limitation. >> > >> > a.c >> > ============================= >> > typedef int (*fptr_t) (void); >> > fptr_t get_fptr(); >> > int main(int argc, char *argv[]) >> > { >> > fptr_t fp = get_fptr(); >> > return fp(); >> > } >> > >> > >> > b.c >> > ============================= >> > typedef...
2018 May 01
0
ThinLTO + CFI
...lare hidden i32 @foo() #3 > > > > > declare hidden i32 @bar() #3 > > > > > > > > > > > > > > > —————————test case--------------- > > > > > b.c > > > > > ================= > > > > > typedef int (*fptr_t) (void); > > > > > fptr_t get_fptr(); > > > > > extern int i; > > > > > > > > > > int main(int argc, char *argv[]) > > > > > { > > > > > i = argc - 2; > > > > > fptr_t fp = get_fptr(); > &g...
2018 May 01
2
ThinLTO + CFI
...re hidden i32 @foo() #3 > > > > > declare hidden i32 @bar() #3 > > > > > > > > > > > > > > > —————————test case--------------- > > > > > b.c > > > > > ================= > > > > > typedef int (*fptr_t) (void); > > > > > fptr_t get_fptr(); > > > > > extern int i; > > > > > > > > > > int main(int argc, char *argv[]) > > > > > { > > > > > i = argc - 2; > > > > > fptr_t fp = get_fptr(); > &...