On 17 November 2016 at 11:27, Christophe Lyon
<christophe.l...@linaro.org> wrote:
> On 17 November 2016 at 10:53, Richard Biener <rguent...@suse.de> wrote:
>> On Thu, 17 Nov 2016, Rainer Orth wrote:
>>
>>> Hi Richard,
>>>
>>> >> Probably providing dummy implemenations as in the original testcase in
>>> >> the PR is enough?
>>> >
>>> > Maybe { dg-require weak } plus weak definitions of the cyg_profile funcs?
>>> > Or simply restrict the test to { target *-*-linux* }?
>>>
>>> the only existing dg-do run testcase (gcc.dg/20001117-1.c) just has
>>>
>>> void __attribute__((no_instrument_function))
>>> __cyg_profile_func_enter(void *this_fn, void *call_site)
>>> {
>>>   if (call_site == (void *)0)
>>>     abort ();
>>> }
>>>
>>> void __attribute__((no_instrument_function))
>>> __cyg_profile_func_exit(void *this_fn, void *call_site)
>>> {
>>>   if (call_site == (void *)0)
>>>     abort ();
>>> }
>>>
>>> In the case at hand, we could do with empty implementations.  This
>>> certainly works on Solaris.
>>
>> Ok.  Christophe, can you add the above and verify it works for you
>> (and then commit)?
>>
> OK, I'm taking a look.
>

I tested and committed (r242553) the attached patch (on arm-none-eabi and
arm-none-linux-gnueabihf). I used empty function as suggested by Rainer.

Thanks,

Christophe

>> Thanks,
>> Richard.
Fix PR78333 testcase for non-glibc systems.

2016-11-17  Christophe Lyon  <christophe.l...@linaro.org>

gcc/testsuite/

        * gcc.dg/pr78333.c: Add empty implementations of
        __cyg_profile_func_enter() and __cyg_profile_func_exit() to avoid
        problems on non-glibc systems.


diff --git a/gcc/testsuite/gcc.dg/pr78333.c b/gcc/testsuite/gcc.dg/pr78333.c
index fd3669c..ca037e5 100644
--- a/gcc/testsuite/gcc.dg/pr78333.c
+++ b/gcc/testsuite/gcc.dg/pr78333.c
@@ -1,6 +1,19 @@
 /* { dg-do link } */
 /* { dg-options "-finstrument-functions" } */
 
+/* Add empty implementations of __cyg_profile_func_enter() and
+   __cyg_profile_func_exit() to avoid problems on non-glibc
+   systems.  */
+void __attribute__((no_instrument_function))
+__cyg_profile_func_enter(void *this_fn, void *call_site)
+{
+}
+
+void __attribute__((no_instrument_function))
+__cyg_profile_func_exit(void *this_fn, void *call_site)
+{
+}
+
 extern inline __attribute__((gnu_inline, always_inline)) int foo () { }
 int main()
 {

Reply via email to