/*
 * Testcase to verify that reference to foo@BAR and a definition of foo@@BAR
 * are not treated as a multiple def.
 */
#include "vers.h"

const char * bar1 = "asdf";
const char * bar2 = "asdf";

extern int old_foo1();

int
bar()
{
	return 3;
}

int
original_foo()
{
	return 1+bar();

}

int
old_foo()
{
	return 10+bar();

}

int
new_foo()
{
	return 1000+bar();

}

int
main()
{
  old_foo1();
  return 0;
}

SYMVER(original_foo, foo@);
SYMVER(old_foo, foo@VERS_1.1);
SYMVER(old_foo1, foo@VERS_1.2);
SYMVER(new_foo, foo@@VERS_1.2);
