From 37d7d56caea508e836bc0d4f0fef0cb520f3ba22 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 16 Feb 2017 22:19:10 +1030 Subject: [PATCH] ld testsuite function pointer comparisons vs. hppa ld/testsuite/ld-elf/check-ptr-eq.c fails for hppa, since function pointers may point at plabels. It isn't valid to cast two function pointers to void* and then compare the void pointers. * testsuite/ld-elf/check-ptr-eq.c (check_ptr_eq): Change params from void pointers to function pointers. * testsuite/ld-elf/pr18718.c: Update to suit. * testsuite/ld-elf/pr18720a.c: Update to suit. --- ld/ChangeLog | 7 +++++++ ld/testsuite/ld-elf/check-ptr-eq.c | 6 +++--- ld/testsuite/ld-elf/pr18718.c | 2 +- ld/testsuite/ld-elf/pr18720a.c | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 1a7d18ca931..ee89792dfa7 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +2017-02-16 Alan Modra + + * testsuite/ld-elf/check-ptr-eq.c (check_ptr_eq): Change params + from void pointers to function pointers. + * testsuite/ld-elf/pr18718.c: Update to suit. + * testsuite/ld-elf/pr18720a.c: Update to suit. + 2017-02-16 Alan Modra PR 21000 diff --git a/ld/testsuite/ld-elf/check-ptr-eq.c b/ld/testsuite/ld-elf/check-ptr-eq.c index 874431fbc1e..c1d5ef69945 100644 --- a/ld/testsuite/ld-elf/check-ptr-eq.c +++ b/ld/testsuite/ld-elf/check-ptr-eq.c @@ -2,11 +2,11 @@ extern void abort (void); /* Since GCC 5 folds symbol address comparison, assuming each symbol has different address, &foo == &bar is always false for GCC 5. Use - check_ptr_eq to check if 2 addresses are the same. */ + check_ptr_eq to check if two functions are the same. */ void -check_ptr_eq (void *p1, void *p2) +check_ptr_eq (void (*f1) (void), void (*f2) (void)) { - if (p1 != p2) + if (f1 != f2) abort (); } diff --git a/ld/testsuite/ld-elf/pr18718.c b/ld/testsuite/ld-elf/pr18718.c index 9cf15e8c054..426f46a42cb 100644 --- a/ld/testsuite/ld-elf/pr18718.c +++ b/ld/testsuite/ld-elf/pr18718.c @@ -2,7 +2,7 @@ #include extern void foo (void); -extern void check_ptr_eq (void *, void *); +extern void check_ptr_eq (void (*) (void), void (*) (void)); void new_foo (void) diff --git a/ld/testsuite/ld-elf/pr18720a.c b/ld/testsuite/ld-elf/pr18720a.c index 752623be06c..b4a33696c6d 100644 --- a/ld/testsuite/ld-elf/pr18720a.c +++ b/ld/testsuite/ld-elf/pr18720a.c @@ -3,7 +3,7 @@ extern void bar (void); extern void foo (void); extern void foo_alias (void); -extern void check_ptr_eq (void *, void *); +extern void check_ptr_eq (void (*) (void), void (*) (void)); #if defined(__GNUC__) && (__GNUC__ * 1000 + __GNUC_MINOR__) >= 4005 __attribute__ ((noinline, noclone)) -- 2.30.2