Re: [PATCH 14/22] parisc: %pF is only for function pointers

From: John David Anglin
Date: Thu Mar 12 2015 - 10:44:01 EST


On 2015-03-12 8:11 AM, James Bottomley wrote:
On Wed, 2015-03-11 at 22:13 -0500, Scott Wood wrote:
Use %pS for actual addresses, otherwise you'll get bad output
on arches like ppc64 where %pF expects a function descriptor. Even on
other architectures, refrain from setting a bad example that people
copy.
Are you sure about this? Parisc64 is a function description
architecture. There may be a misunderstanding about what
__builtin_return_address(0) is supposed to return, but I'm certain the
person who added the code thought it returned a function pointer, which
on parisc64 would be a descriptor.

__builtin_return_address(0) returns the return address in the calling procedure
ignoring import/export stubs. There are no function descriptors for return addresses.
Thus, it can't return a function pointer.

There are no function descriptors in 32-bit parisc when the -mfast-indirect-calls
compiler option is used.

This option used to be used for 64-bit kernel builds but this broke when the
-mfast-indirect-calls was fixed for user space (gcl uses it). I worked a bit
on trying to eliminate function descriptors from the 64-bit kernel for performance
but I don't have a working change.

Dave

--
John David Anglin dave.anglin@xxxxxxxx

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/