Displaying 4 results from an estimated 4 matches for "foo_ifunc".
2015 Dec 18
2
RFC: __attribute__((ifunc("resolver")) representation in LLVM IR
...`GlobalAlias`
>From implementation perspective ifunc is very close to a function alias
that points to resolver function as a target. During asm emissions
`@gnu_indirect_function` symbol attribute is added. In printed LLVM it
could look like this:
`@foo = alias ifunc i32 (i32), bitcast (i64 ()* @foo_ifunc to i32 (i32)*)`
Pros:
- minimal changes LLVM code base
Cons:
- ifunc is not really an alias, if some code passes through alias and
starts using resolver function instead of ifunc, it is always an error
- in particular in my prototype I had to add weak linkage to inhibit
optimizations (it prevents...
2015 Dec 19
2
RFC: __attribute__((ifunc("resolver")) representation in LLVM IR
...very close to a function alias
> that
> > points to resolver function as a target. During asm emissions
> > `@gnu_indirect_function` symbol attribute is added. In printed LLVM it
> could
> > look like this:
> >
> > `@foo = alias ifunc i32 (i32), bitcast (i64 ()* @foo_ifunc to i32
> (i32)*)`
> >
> > Pros:
> > - minimal changes LLVM code base
> >
> > Cons:
> > - ifunc is not really an alias, if some code passes through alias and
> starts
> > using resolver function instead of ifunc, it is always an error
> > - in pa...
2015 Dec 21
2
RFC: __attribute__((ifunc("resolver")) representation in LLVM IR
...;> > points to resolver function as a target. During asm emissions
>>> > `@gnu_indirect_function` symbol attribute is added. In printed LLVM it
>>> could
>>> > look like this:
>>> >
>>> > `@foo = alias ifunc i32 (i32), bitcast (i64 ()* @foo_ifunc to i32
>>> (i32)*)`
>>> >
>>> > Pros:
>>> > - minimal changes LLVM code base
>>> >
>>> > Cons:
>>> > - ifunc is not really an alias, if some code passes through alias and
>>> starts
>>> > using res...
2015 Dec 23
2
RFC: __attribute__((ifunc("resolver")) representation in LLVM IR
...arget. During asm emissions
>>>>> > `@gnu_indirect_function` symbol attribute is added. In printed LLVM
>>>>> > it could
>>>>> > look like this:
>>>>> >
>>>>> > `@foo = alias ifunc i32 (i32), bitcast (i64 ()* @foo_ifunc to i32
>>>>> > (i32)*)`
>>>>> >
>>>>> > Pros:
>>>>> > - minimal changes LLVM code base
>>>>> >
>>>>> > Cons:
>>>>> > - ifunc is not really an alias, if some code passes thro...