pr18718.c 628 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. extern void foo (void);
  4. extern void check_ptr_eq (void (*) (void), void (*) (void));
  5. void
  6. new_foo (void)
  7. {
  8. }
  9. __asm__(".symver new_foo, foo@@VERS_2.0");
  10. #if defined __powerpc64__ && defined _CALL_AIXDESC && !defined _CALL_LINUX
  11. __asm__(".symver .new_foo, .foo@@VERS_2.0");
  12. #endif
  13. #if defined(__GNUC__) && (__GNUC__ * 1000 + __GNUC_MINOR__) >= 4005
  14. __attribute__ ((noinline, noclone))
  15. #else
  16. __attribute__ ((noinline))
  17. #endif
  18. int
  19. bar (void)
  20. {
  21. return (intptr_t) &foo == 0x12345678 ? 1 : 0;
  22. }
  23. int
  24. main(void)
  25. {
  26. bar ();
  27. check_ptr_eq (&foo, &new_foo);
  28. printf("PASS\n");
  29. return 0;
  30. }