1 // Test for versioned symbol
2 //
3 // Currently version information is unsupported by ELF reader, so tests may
4 // produce wrong results.
5 // TODO: remove statement above after support is implemented
6
7 void tweak(int dummy);
8
versioned_foo(void)9 void versioned_foo(void) { tweak(1); }
10
11 __asm__(".symver versioned_foo_v1, versioned_foo@@VERS_1");
versioned_foo_v1(void)12 void versioned_foo_v1(void) { tweak(2); }
13
14 __asm__(".symver versioned_foo_v2, versioned_foo@VERS_2");
versioned_foo_v2(void)15 void versioned_foo_v2(void) { tweak(3); }
16
17 __asm__(".symver versioned_foo_v3, versioned_foo@VERS_3");
versioned_foo_v3(void)18 void versioned_foo_v3(void) { tweak(4); }
19
20 // Using a libc function helps to add the "version needs" section
21 // in addition to the "version definitions". This helps to catch
22 // bugs when a file has both of these sections.
23 int printf(const char *format, ...);
24
test()25 int test() {
26 printf("test");
27 return 0;
28 }
29