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,