----- Original Message -----
> From: chru...@suse.cz
> To: "Jan Stancek" <jstan...@redhat.com>
> Cc: ltp-list@lists.sourceforge.net
> Sent: Wednesday, 20 August, 2014 4:32:52 PM
> Subject: Re: [LTP] [PATCH/RFC] profil01: don't use address of function
> 
> Hi!
> > This testcase is failing on ppc64 BE system, because
> > address of &test_profil does not reference beginning of code,
> > but entry in .opd section:
> >   "This section contains the official procedure descriptors.
> >    A pointer to a function shall reference a procedure descriptor
> >    in this section."
> > which was at address larger than all .text of test_profil.
> > 
> > This patch is replacing address of function approach with gcc's
> > __builtin_return_address() to get current pc value.
> 
> How is it with compatibility? In which gcc version was this building
> introduced?
> Does it work with clang?

I think it was introduced in 90s, though not every architecture supported
it at first.

I see it in very first release of clang 1.0 sources:
./src/gcc/builtins.def:DEF_GCC_BUILTIN
        (BUILT_IN_RETURN_ADDRESS, "return_address", BT_FN_PTR_UNSIGNED, 
ATTR_NULL)
but I didn't try to compile it with that.

> 
> If we are in doubt, we should add a configure check and use it only when
> available. And probably to default to &test_profil in all cases but
> ppc64 BE which is known to fail.

I'm trying one other idea:

+static inline void *get_pc(void)
+{
+       extern void *profil01_label;
+
+       asm("profil01_label:");
+       return &profil01_label;
+}

Regards,
Jan

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to