Proper attributes for .init entries
This commit is contained in:
+8
-1
@@ -6,7 +6,14 @@
|
||||
#pragma once
|
||||
|
||||
#define __weak __attribute__((weak))
|
||||
|
||||
// A bit of assembler "sorcery" here:
|
||||
// By default (with only section name specified) gcc will spit out:
|
||||
// .section .init,"aw",@progbits
|
||||
// But .init section is "ax", so the result will be
|
||||
// .section .init,"ax",@progbits //"aw",@progbits
|
||||
// '//' will just comment out the stuff GCC produced
|
||||
#define __init(name) \
|
||||
static void name(void); \
|
||||
const void *__init_##name __attribute__((section(".init"),used)) = name; \
|
||||
const void *__init_##name __attribute__((section(".init,\"ax\",@progbits //"),used)) = name; \
|
||||
static void name(void)
|
||||
|
||||
Reference in New Issue
Block a user