@@ -35,6 +35,10 @@ PATCHTOOL = "git"
inherit dpkg
DEPENDS = "python-shtab"
+
+DEPENDS:trixie = "gnu-efi"
+DEPENDS:sid = "gnu-efi"
+
# needed for buster, bullseye could use compat >= 13
python() {
arch = d.getVar('DISTRO_ARCH')
new file mode 100644
@@ -0,0 +1,93 @@
+From 24a4cd0e5653fd84b004c00c808c45cc3fb7a7e2 Mon Sep 17 00:00:00 2001
+From: Callum Farmer <gmbr3@opensuse.org>
+Date: Mon, 23 Sep 2024 16:51:49 +0100
+Subject: [PATCH] ARM32: Split headers and code
+
+* Force code to be at known dest of 4096
+* Move _start into .text
+* Load the _start symbol address and then minus 4096 to get the load
+ address
+
+Signed-off-by: Callum Farmer <gmbr3@opensuse.org>
+---
+ gnuefi/crt0-efi-arm.S | 21 +++++++++++----------
+ gnuefi/elf_arm_efi.lds | 1 +
+ 2 files changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/gnuefi/crt0-efi-arm.S b/gnuefi/crt0-efi-arm.S
+index 9c2c467..ad02ca1 100644
+--- a/gnuefi/crt0-efi-arm.S
++++ b/gnuefi/crt0-efi-arm.S
+@@ -45,11 +45,11 @@ optional_header:
+ .2byte 0x10b // PE32+ format
+ .byte 0x02 // MajorLinkerVersion
+ .byte 0x14 // MinorLinkerVersion
+- .4byte _etext - _start // SizeOfCode
++ .4byte _text_size - ImageBase // SizeOfCode
+ .4byte _alldata_size - ImageBase // SizeOfInitializedData
+ .4byte 0 // SizeOfUninitializedData
+- .4byte _start - ImageBase // AddressOfEntryPoint
+- .4byte _start - ImageBase // BaseOfCode
++ .4byte _text - ImageBase // AddressOfEntryPoint
++ .4byte _text - ImageBase // BaseOfCode
+ .4byte _reloc - ImageBase // BaseOfData
+
+ extra_header_fields:
+@@ -67,7 +67,7 @@ extra_header_fields:
+ .4byte _image_end - ImageBase // SizeOfImage
+
+ // Everything before the kernel image is considered part of the header
+- .4byte _start - ImageBase // SizeOfHeaders
++ .4byte _text - ImageBase // SizeOfHeaders
+ .4byte 0 // CheckSum
+ .2byte EFI_SUBSYSTEM // Subsystem
+ .2byte 0 // DllCharacteristics
+@@ -100,10 +100,10 @@ extra_header_fields:
+ section_table:
+
+ .ascii ".text\0\0\0"
+- .4byte _evtext - _start // VirtualSize
+- .4byte _start - ImageBase // VirtualAddress
+- .4byte _etext - _start // SizeOfRawData
+- .4byte _start - ImageBase // PointerToRawData
++ .4byte _text_vsize - ImageBase // VirtualSize
++ .4byte _text - ImageBase // VirtualAddress
++ .4byte _text_size - ImageBase // SizeOfRawData
++ .4byte _text - ImageBase // PointerToRawData
+ .4byte 0 // PointerToRelocations (0 for executables)
+ .4byte 0 // PointerToLineNumbers (0 for executables)
+ .2byte 0 // NumberOfRelocations (0 for executables)
+@@ -148,7 +148,7 @@ section_table:
+ .2byte 0 // NumberOfLineNumbers
+ .4byte 0x40000040 // Characteristics (section flags)
+
+-.balign 256
++.text
+ .globl _start
+ .type _start,%function
+ _start:
+@@ -159,7 +159,8 @@ _start:
+ adr r1, .L_DYNAMIC
+ ldr r0, [r1]
+ add r1, r0, r1
+- adr r0, ImageBase
++ adr r0, _start
++ sub r0, r0, #0x1000
+ bl _relocate
+ teq r0, #0
+ bne 0f
+diff --git a/gnuefi/elf_arm_efi.lds b/gnuefi/elf_arm_efi.lds
+index afe17af..b7e3fb1 100644
+--- a/gnuefi/elf_arm_efi.lds
++++ b/gnuefi/elf_arm_efi.lds
+@@ -5,6 +5,7 @@ SECTIONS
+ {
+ .text 0 : {
+ *(.text.head)
++ . = 0x1000;
+ _text = .;
+ *(.text)
+ *(.text.*)
+--
+2.43.0
+
new file mode 100644
@@ -0,0 +1,25 @@
+#
+# CIP Core, generic profile
+#
+# Copyright (c) Siemens AG, 2023
+#
+# Authors:
+# Jan Kiszka <jan.kiszka@siemens.com>
+#
+# SPDX-License-Identifier: MIT
+#
+
+inherit dpkg
+
+CHANGELOG_V="<orig-version>+cip"
+
+SRC_URI = "apt://${BPN}"
+SRC_URI += "file://0001-ARM32-Split-headers-and-code.patch;apply=no"
+
+do_prepare_build() {
+ deb_add_changelog
+
+ cd ${S}
+ quilt import -f ${WORKDIR}/*.patch
+ quilt push -a
+}