From 73fdaa816d211fc5780c3239f5d12cc1a7255fcd Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Thu, 6 Feb 2025 17:19:27 +0100 Subject: [PATCH] Fix ELF note alignment The individual entries should be 4-byte aligned. Signed-off-by: Wolfgang Bumiller --- perlmod-bin/genpackage.pl | 3 +++ perlmod/src/elf_notes.rs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/perlmod-bin/genpackage.pl b/perlmod-bin/genpackage.pl index 4e73e41..5aa7e28 100755 --- a/perlmod-bin/genpackage.pl +++ b/perlmod-bin/genpackage.pl @@ -260,6 +260,9 @@ if ($from_notes) { my $desc = substr($data, 0, $desc_size, ''); print("Found package '$name'\n"); push @packages, $name; + # notes are 4-byte aligned, the header is already a multiple of 4 bytes, so: + my $skip = 3 & (4 - (3 & ($name_size + $desc_size))); + substr($data, 0, $skip, ''); } die "trailing data in notes section\n" if length($data); @ARGV = @packages; diff --git a/perlmod/src/elf_notes.rs b/perlmod/src/elf_notes.rs index dee6056..0330c23 100644 --- a/perlmod/src/elf_notes.rs +++ b/perlmod/src/elf_notes.rs @@ -10,7 +10,7 @@ pub struct Info { } */ -#[repr(C, packed)] +#[repr(C, align(4))] pub struct ElfNote { pub name_size: u32, pub desc_size: u32,