xref: /aosp_15_r20/external/stg/test_cases/info_tests/symbol/version_definition.c (revision 9e3b08ae94a55201065475453d799e8b1378bea6)
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 
versioned_foo(void)7 int versioned_foo(void) { return 1; }
8 
9 __asm__(".symver versioned_foo_v1, versioned_foo@@VERS_1");
versioned_foo_v1(void)10 int versioned_foo_v1(void) { return 2; }
11 
12 __asm__(".symver versioned_foo_v2, versioned_foo@VERS_2");
versioned_foo_v2(void)13 int versioned_foo_v2(void) { return 3; }
14 
15 __asm__(".symver versioned_foo_v3, versioned_foo@VERS_3");
versioned_foo_v3(void)16 int versioned_foo_v3(void) { return 4; }
17 
18 // Using a libc function helps to add the "version needs" section
19 // in addition to the "version definitions". This helps to catch
20 // bugs when a file has both of these sections.
21 int printf(const char *format, ...);
22 
test()23 int test() {
24   printf("test");
25   return 0;
26 }
27