[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_stubThis 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 messageWhat 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.