• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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