From c7a98a9f82fc32012c9ca23cc1bda2dc9a82fedf Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Tue, 28 May 2019 18:24:42 -0700 Subject: common: Define markers for weak symbols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch introduces macros to mark weak symbols. These macros are used to annotate weak definitions, declarations, and overriding definitions. __override_proto: declarations __override: definitions which take precedence __overridable: default (weak) definitions Signed-off-by: Daisuke Nojiri BUG=chromium.org/964060 BRANCH= firmware-atlas-11827.B TEST=With other PD Policies patches, flash atlas and run faft_ec&pd Change-Id: I44cec41e0523e285db19a890d084b52337f64a9c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1633911 Reviewed-by: Jack Rosenthal Reviewed-by: Denis Brockus Reviewed-by: Jett Rink Tested-by: Jack Rosenthal Commit-Queue: Denis Brockus Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2296081 Tested-by: Dawid Niedźwiecki Reviewed-by: caveh jalali Reviewed-by: Daisuke Nojiri Commit-Queue: Dossym Nurmukhanov --- include/common.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/common.h b/include/common.h index 4f1b1f76a4..8897bb5b0e 100644 --- a/include/common.h +++ b/include/common.h @@ -217,6 +217,33 @@ enum ec_error_list { #define test_export_static static #endif +/* + * Weak symbol markers + * + * These macros are used to annotate weak definitions, their declarations, and + * overriding definitions. + * + * __override_proto: declarations + * __override: definitions which take precedence + * __overridable: default (weak) definitions + * + * For example, in foo.h: + * __override_proto void foo(void); + * + * and in foo.c: + * __overridable void foo(void) { + * ... + * } + * + * and in board.c: + * __override void foo(void) { + * ... + * } + */ +#define __override_proto +#define __override +#define __overridable __attribute__((weak)) + /* * Mark functions that collide with stdlib so they can be hidden when linking * against libraries that require stdlib. HIDE_EC_STDLIB should be defined -- cgit v1.2.1