kernel: mips: zboot: put appended dtb into a section
authorChuanhong Guo <gch981213@gmail.com>
Thu, 29 Oct 2020 13:22:57 +0000 (21:22 +0800)
committerChuanhong Guo <gch981213@gmail.com>
Thu, 29 Oct 2020 13:34:56 +0000 (21:34 +0800)
This will make a separated section for dtb appear in ELF, and we can
then use objcopy to patch a dtb into vmlinuz when RAW_APPENDED_DTB
is set in kernel config.

command to patch a dtb:
objcopy --set-section-flags=.appended_dtb=alloc,contents \
        --update-section=.appended_dtb=<target>.dtb vmlinuz vmlinuz-dtb

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
target/linux/generic/pending-5.4/311-MIPS-zboot-put-appended-dtb-into-a-section.patch [new file with mode: 0644]

diff --git a/target/linux/generic/pending-5.4/311-MIPS-zboot-put-appended-dtb-into-a-section.patch b/target/linux/generic/pending-5.4/311-MIPS-zboot-put-appended-dtb-into-a-section.patch
new file mode 100644 (file)
index 0000000..3f8808f
--- /dev/null
@@ -0,0 +1,36 @@
+From 7d1531c81c0fb4c93bea8dc316043ad0e4d0c270 Mon Sep 17 00:00:00 2001
+From: Chuanhong Guo <gch981213@gmail.com>
+Date: Sun, 25 Oct 2020 23:19:40 +0800
+Subject: [PATCH] MIPS: zboot: put appended dtb into a section
+
+This will make a separated section for dtb appear in ELF, and we can
+then use objcopy to patch a dtb into vmlinuz when RAW_APPENDED_DTB
+is set in kernel config.
+
+command to patch a dtb:
+objcopy --set-section-flags=.appended_dtb=alloc,contents \
+        --update-section=.appended_dtb=<target>.dtb vmlinuz vmlinuz-dtb
+
+Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
+---
+ arch/mips/boot/compressed/ld.script | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+--- a/arch/mips/boot/compressed/ld.script
++++ b/arch/mips/boot/compressed/ld.script
+@@ -31,9 +31,12 @@ SECTIONS
+               CONSTRUCTORS
+               . = ALIGN(16);
+       }
+-      __appended_dtb = .;
+-      /* leave space for appended DTB */
+-      . += 0x100000;
++
++      .appended_dtb : {
++              __appended_dtb = .;
++              /* leave space for appended DTB */
++              . += 0x100000;
++      }
+       _edata = .;
+       /* End of data section */