diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2019-05-28 18:24:42 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-07-17 04:22:17 +0000 |
commit | c7a98a9f82fc32012c9ca23cc1bda2dc9a82fedf (patch) | |
tree | 45a6df007e357a90fc07c1bd1ae1d9975962a1e3 | |
parent | a99ca653c102ca7a8fcc047e513bd9a41b1f3645 (diff) | |
download | chrome-ec-c7a98a9f82fc32012c9ca23cc1bda2dc9a82fedf.tar.gz |
common: Define markers for weak symbols
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 <dnojiri@chromium.org>
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 <jrosenth@chromium.org>
Reviewed-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Tested-by: Jack Rosenthal <jrosenth@chromium.org>
Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2296081
Tested-by: Dawid Niedźwiecki <dn@semihalf.com>
Reviewed-by: caveh jalali <caveh@chromium.org>
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Commit-Queue: Dossym Nurmukhanov <dossym@chromium.org>
-rw-r--r-- | include/common.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/include/common.h b/include/common.h index 4f1b1f76a4..8897bb5b0e 100644 --- a/include/common.h +++ b/include/common.h @@ -218,6 +218,33 @@ enum ec_error_list { #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 * before including common.h from code that links to cstdlib. |