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; }
>...
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; }
>
>...
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;
> >...
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;
> >...
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; }
>
>...
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();
> >...
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();
> &...