why C++ cannot alias an inline function, C can ?
Max Filippov
jcmvbkbc@gmail.com
Sun Apr 1 12:13:00 GMT 2018
On Sun, Apr 1, 2018 at 4:34 AM, Jason Vas Dias <jason.vas.dias@gmail.com> wrote:
> In C++ however, it does not compile :
>
> $ g++ -g -std=gnu++11 -x c++ -c t.c
> t.c:5:8: error: 'void bar()' aliased to undefined symbol 'foo'
> void bar(void);
> ^
>
> Even though, if I compile the object with the declaration
> of bar() commented out , I can see C++ is not mangling
> the name "foo" :
gcc manual says the follwing about the alias attribute:
"In C++, the mangled name for the target must be used."
so with the following modification your example compiles:
static inline __attribute__((always_inline,alias("_ZL3foov")))
void bar(void);
--
Thanks.
-- Max
More information about the Gcc
mailing list