Thread (16 messages) 16 messages, 4 authors, 2016-02-03
STALE3781d

[PATCH 1/3] arm64: efistub: drop __init annotation from handle_kernel_image()

From: Ard Biesheuvel <hidden>
Date: 2016-02-02 11:09:41
Also in: linux-efi

On 2 February 2016 at 12:08, Matt Fleming [off-list ref] wrote:
On Fri, 29 Jan, at 05:03:16PM, Ard Biesheuvel wrote:
quoted
On 29 January 2016 at 17:00, Matt Fleming [off-list ref] wrote:
quoted
On Fri, 29 Jan, at 10:36:03AM, Ard Biesheuvel wrote:
quoted
On 28 January 2016 at 23:58, Matt Fleming [off-list ref] wrote:
quoted
Would it make more sense to #undef __init in one of the arm64 efistub
header files? I'm thinking of the case where some poor unsuspecting
developer writes a new function and marks it as __init, and we miss it
during review.
Yes, I can add it to efistub.h, and make sure it gets included in all the files

Should we #undef it and #define it to a string that is easily grep'ed
for, so it is easy to find the explanatory comment that goes along
with it?
E.g.,

#define __init __init_not_supported_in_efi_stub
This would produce a compilation failure if someone tags something as
__init right? Looks fine to me.
Yes, but it makes the error message difficult to decipher, since
__init is printed and not what it resolves to. Locally, I tried this,
which seems to work:

#undef __init
#define __init __attribute__((__init_not_supported_in_efi_stub))
#pragma GCC diagnostic error "-Wattributes"

which produces

  CC      drivers/firmware/efi/libstub/arm-stub.o
/home/ard/linux-2.6/drivers/firmware/efi/libstub/arm-stub.c:24:1:
error: ?__init_not_supported_in_efi_stub? attribute directive ignored
[-Werror=attributes]
 {
 ^
cc1: some warnings being treated as errors

which is slightly dodgy, but at least puts the string right in the error message
What about,

#define __init __compiletime_error("__init not supported in EFI boot stub")
That only works for invocations, i.e., it needs to be used in header
files, and will trigger the error if a call to the function remains
after optimization. We want it at function definition time instead.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help