aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch')
-rw-r--r--meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch194
1 files changed, 0 insertions, 194 deletions
diff --git a/meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch b/meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch
deleted file mode 100644
index 953f13bd0a..0000000000
--- a/meta/recipes-kernel/kexec/kexec-tools/0002-kexec-generalize-and-rename-get_kernel_stext_sym.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From d29f37bb6e9114aba96c606103b110f511bee9a1 Mon Sep 17 00:00:00 2001
-From: Pratyush Anand <panand@redhat.com>
-Date: Wed, 2 Nov 2016 15:05:25 +0530
-Subject: [PATCH 2/9] kexec: generalize and rename get_kernel_stext_sym()
-
-get_kernel_stext_sym() has been defined for both arm and i386. Other
-architecture might need some other kernel symbol address. Therefore rewrite
-this function as generic function to get any kernel symbol address.
-
-More over, kallsyms is not arch specific representation, therefore have
-common function for all arches.
-
-Upstream-Status: Backport [https://git.linaro.org/people/takahiro.akashi/kexec-tools.git]
-
-Signed-off-by: Pratyush Anand <panand@redhat.com>
-[created symbols.c]
-Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- kexec/Makefile | 1 +
- kexec/arch/arm/crashdump-arm.c | 40 +---------------------------------------
- kexec/arch/i386/crashdump-x86.c | 29 -----------------------------
- kexec/kexec.h | 2 ++
- kexec/symbols.c | 41 +++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 45 insertions(+), 68 deletions(-)
- create mode 100644 kexec/symbols.c
-
-diff --git a/kexec/Makefile b/kexec/Makefile
-index 39f365f..2b4fb3d 100644
---- a/kexec/Makefile
-+++ b/kexec/Makefile
-@@ -26,6 +26,7 @@ KEXEC_SRCS_base += kexec/kernel_version.c
- KEXEC_SRCS_base += kexec/lzma.c
- KEXEC_SRCS_base += kexec/zlib.c
- KEXEC_SRCS_base += kexec/kexec-xen.c
-+KEXEC_SRCS_base += kexec/symbols.c
-
- KEXEC_GENERATED_SRCS += $(PURGATORY_HEX_C)
-
-diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c
-index 4a89b5e..245c21a 100644
---- a/kexec/arch/arm/crashdump-arm.c
-+++ b/kexec/arch/arm/crashdump-arm.c
-@@ -73,48 +73,10 @@ static struct crash_elf_info elf_info = {
-
- extern unsigned long long user_page_offset;
-
--/* Retrieve kernel _stext symbol virtual address from /proc/kallsyms */
--static unsigned long long get_kernel_stext_sym(void)
--{
-- const char *kallsyms = "/proc/kallsyms";
-- const char *stext = "_stext";
-- char sym[128];
-- char line[128];
-- FILE *fp;
-- unsigned long long vaddr = 0;
-- char type;
--
-- fp = fopen(kallsyms, "r");
-- if (!fp) {
-- fprintf(stderr, "Cannot open %s\n", kallsyms);
-- return 0;
-- }
--
-- while(fgets(line, sizeof(line), fp) != NULL) {
-- unsigned long long addr;
--
-- if (sscanf(line, "%Lx %c %s", &addr, &type, sym) != 3)
-- continue;
--
-- if (strcmp(sym, stext) == 0) {
-- dbgprintf("kernel symbol %s vaddr = %#llx\n", stext, addr);
-- vaddr = addr;
-- break;
-- }
-- }
--
-- fclose(fp);
--
-- if (vaddr == 0)
-- fprintf(stderr, "Cannot get kernel %s symbol address\n", stext);
--
-- return vaddr;
--}
--
- static int get_kernel_page_offset(struct kexec_info *info,
- struct crash_elf_info *elf_info)
- {
-- unsigned long long stext_sym_addr = get_kernel_stext_sym();
-+ unsigned long long stext_sym_addr = get_kernel_sym("_stext");
- if (stext_sym_addr == 0) {
- if (user_page_offset != (-1ULL)) {
- elf_info->page_offset = user_page_offset;
-diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
-index ab833d4..abf82a5 100644
---- a/kexec/arch/i386/crashdump-x86.c
-+++ b/kexec/arch/i386/crashdump-x86.c
-@@ -102,35 +102,6 @@ static int get_kernel_paddr(struct kexec_info *UNUSED(info),
- return -1;
- }
-
--/* Retrieve kernel symbol virtual address from /proc/kallsyms */
--static unsigned long long get_kernel_sym(const char *symbol)
--{
-- const char *kallsyms = "/proc/kallsyms";
-- char sym[128];
-- char line[128];
-- FILE *fp;
-- unsigned long long vaddr;
-- char type;
--
-- fp = fopen(kallsyms, "r");
-- if (!fp) {
-- fprintf(stderr, "Cannot open %s\n", kallsyms);
-- return 0;
-- }
--
-- while(fgets(line, sizeof(line), fp) != NULL) {
-- if (sscanf(line, "%Lx %c %s", &vaddr, &type, sym) != 3)
-- continue;
-- if (strcmp(sym, symbol) == 0) {
-- dbgprintf("kernel symbol %s vaddr = %16llx\n", symbol, vaddr);
-- return vaddr;
-- }
-- }
--
-- fprintf(stderr, "Cannot get kernel %s symbol address\n", symbol);
-- return 0;
--}
--
- /* Retrieve info regarding virtual address kernel has been compiled for and
- * size of the kernel from /proc/kcore. Current /proc/kcore parsing from
- * from kexec-tools fails because of malformed elf notes. A kernel patch has
-diff --git a/kexec/kexec.h b/kexec/kexec.h
-index 9194f1c..b4fafad 100644
---- a/kexec/kexec.h
-+++ b/kexec/kexec.h
-@@ -312,4 +312,6 @@ int xen_kexec_load(struct kexec_info *info);
- int xen_kexec_unload(uint64_t kexec_flags);
- void xen_kexec_exec(void);
-
-+extern unsigned long long get_kernel_sym(const char *text);
-+
- #endif /* KEXEC_H */
-diff --git a/kexec/symbols.c b/kexec/symbols.c
-new file mode 100644
-index 0000000..ea6e327
---- /dev/null
-+++ b/kexec/symbols.c
-@@ -0,0 +1,41 @@
-+#include <stdio.h>
-+#include <string.h>
-+#include "kexec.h"
-+
-+/* Retrieve kernel symbol virtual address from /proc/kallsyms */
-+unsigned long long get_kernel_sym(const char *text)
-+{
-+ const char *kallsyms = "/proc/kallsyms";
-+ char sym[128];
-+ char line[128];
-+ FILE *fp;
-+ unsigned long long vaddr = 0;
-+ char type;
-+
-+ fp = fopen(kallsyms, "r");
-+ if (!fp) {
-+ fprintf(stderr, "Cannot open %s\n", kallsyms);
-+ return 0;
-+ }
-+
-+ while (fgets(line, sizeof(line), fp) != NULL) {
-+ unsigned long long addr;
-+
-+ if (sscanf(line, "%Lx %c %s", &addr, &type, sym) != 3)
-+ continue;
-+
-+ if (strcmp(sym, text) == 0) {
-+ dbgprintf("kernel symbol %s vaddr = %#llx\n",
-+ text, addr);
-+ vaddr = addr;
-+ break;
-+ }
-+ }
-+
-+ fclose(fp);
-+
-+ if (vaddr == 0)
-+ fprintf(stderr, "Cannot get kernel %s symbol address\n", text);
-+
-+ return vaddr;
-+}
---
-1.9.1
-