From c6ee887e962a25d73420aa867e3804e690a28fb8 Mon Sep 17 00:00:00 2001 From: Travis Geiselbrecht Date: Fri, 15 May 2020 00:00:50 -0700 Subject: [PATCH] [init] switch the init hook system to __start __stop style symbols --- top/include/lk/init.h | 2 +- top/init.c | 6 +++--- top/init.ld | 8 -------- top/rules.mk | 2 -- 4 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 top/init.ld diff --git a/top/include/lk/init.h b/top/include/lk/init.h index e7fdf0bf..28616e38 100644 --- a/top/include/lk/init.h +++ b/top/include/lk/init.h @@ -60,7 +60,7 @@ struct lk_init_struct { }; #define LK_INIT_HOOK_FLAGS(_name, _hook, _level, _flags) \ - const struct lk_init_struct _init_struct_##_name __ALIGNED(sizeof(void *)) __SECTION(".lk_init") = { \ + const struct lk_init_struct _init_struct_##_name __ALIGNED(sizeof(void *)) __SECTION("lk_init") = { \ .level = _level, \ .flags = _flags, \ .hook = _hook, \ diff --git a/top/init.c b/top/init.c index 50256622..97f8862a 100644 --- a/top/init.c +++ b/top/init.c @@ -25,8 +25,8 @@ #define EARLIEST_TRACE_LEVEL LK_INIT_LEVEL_TARGET_EARLY #endif -extern const struct lk_init_struct __lk_init[]; -extern const struct lk_init_struct __lk_init_end[]; +extern const struct lk_init_struct __start_lk_init __WEAK; +extern const struct lk_init_struct __stop_lk_init __WEAK; void lk_init_level(enum lk_init_flags required_flag, uint start_level, uint stop_level) { LTRACEF("flags %#x, start_level %#x, stop_level %#x\n", @@ -41,7 +41,7 @@ void lk_init_level(enum lk_init_flags required_flag, uint start_level, uint stop const struct lk_init_struct *found = NULL; bool seen_last = false; - for (const struct lk_init_struct *ptr = __lk_init; ptr != __lk_init_end; ptr++) { + for (const struct lk_init_struct *ptr = &__start_lk_init; ptr != &__stop_lk_init; ptr++) { LTRACEF("looking at %p (%s) level %#x, flags %#x, seen_last %d\n", ptr, ptr->name, ptr->level, ptr->flags, seen_last); if (ptr == last) diff --git a/top/init.ld b/top/init.ld deleted file mode 100644 index 89a35b23..00000000 --- a/top/init.ld +++ /dev/null @@ -1,8 +0,0 @@ -SECTIONS { - .lk_init : { - __lk_init = .; - KEEP (*(.lk_init)) - __lk_init_end = .; - } -} -INSERT AFTER .rodata; diff --git a/top/rules.mk b/top/rules.mk index 88b6915f..be56a7c7 100644 --- a/top/rules.mk +++ b/top/rules.mk @@ -14,6 +14,4 @@ MODULE_SRCS := \ $(LOCAL_DIR)/init.c \ $(LOCAL_DIR)/main.c \ -EXTRA_LINKER_SCRIPTS += $(LOCAL_DIR)/init.ld - include make/module.mk