[syslinux] [PATCH v3 5/5] efi: Useless relocation section in PE file

Sylvain Gault sylvain.gault at gmail.com
Sun Feb 2 20:43:06 PST 2014


There is no need to have a relocation section that nothing points at.
The image is still seen as relocatable as long as the Characteristics of
the FileHeader do not say otherwise.

Signed-off-by: Sylvain Gault <sylvain.gault at gmail.com>
---
 efi/wrapper.c | 20 ++------------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/efi/wrapper.c b/efi/wrapper.c
index 2b96665..1988124 100644
--- a/efi/wrapper.c
+++ b/efi/wrapper.c
@@ -48,7 +48,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
 {
 	struct optional_hdr o_hdr;
 	struct optional_hdr_pe32p o_hdr_pe32p;
-	struct section t_sec, r_sec;
+	struct section t_sec;
 	struct extra_hdr e_hdr;
 	struct extra_hdr_pe32p e_hdr_pe32p;
 	struct coff_hdr c_hdr;
@@ -80,7 +80,7 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
 	fwrite(&hdr, sizeof(hdr), 1, f);
 
 	memset(&c_hdr, 0, sizeof(c_hdr));
-	c_hdr.nr_sections = 2;
+	c_hdr.nr_sections = 1;
 	c_hdr.nr_syms = 1;
 	if (class == ELFCLASS32) {
 		c_hdr.arch = IMAGE_FILE_MACHINE_I386;
@@ -142,22 +142,6 @@ static void write_header(FILE *f, __uint32_t entry, size_t data_size,
 	fwrite(&t_sec, sizeof(t_sec), 1, f);
 
 	/*
-	 * Write our empty reloc section.
-	 */
-	memset(&r_sec, 0, sizeof(r_sec));
-	strcpy((char *)r_sec.name, ".reloc");
-	r_sec.virtual_sz = 0;
-	/* /!\ Attention! Some UEFI implementations require a valid virtual
-	 * address despite the virtual_sz = 0. */
-	r_sec.virtual_address = t_sec.virtual_address;
-	r_sec.raw_data_sz = r_sec.virtual_sz;
-	r_sec.raw_data = r_sec.virtual_address;
-	r_sec.characteristics = IMAGE_SCN_CNT_INITIALIZED_DATA |
-		IMAGE_SCN_ALIGN_1BYTES | IMAGE_SCN_MEM_DISCARDABLE |
-		IMAGE_SCN_MEM_READ;
-	fwrite(&r_sec, sizeof(r_sec), 1, f);
-
-	/*
 	 * Add some padding to align the ELF as needed
 	 */
 	if (ftell(f) > t_sec.virtual_address) {
-- 
1.8.5.2



More information about the Syslinux mailing list