https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48200
--- Comment #19 from Xi Ruoyao <ryxi at stu dot xidian.edu.cn> --- I think the best result would be like FMV, for e.g. int foo(void) __attribute__((symver("@1.1"))) { return 0; } int foo(void) __attribute__((symver("@@1.2"))) { return 1; } Would produce two symbols "foo.symver.1.1" and "foo.symver.1.2", and .symver foo.symver.1.1 foo@1.1 .symver foo.symver.1.2 foo@@1.2 And we can also use int foo(void) __attribute__((symver("@1.0"), alias("foo_old"))); But this seems difficult in C FE, it tends to complain the "redefine" of foo - note that FMV is still only for C++ until now.