From ce8c221fa96d29354e6d6dbb00bf1e09f10c0222 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C3=ABl=20Hauspie?= <michael.hauspie@univ-lille.fr>
Date: Sat, 8 Jun 2024 17:45:03 +0200
Subject: [PATCH] Fix align function

---
 src/link.rs | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/src/link.rs b/src/link.rs
index 577ed3d..04b749f 100644
--- a/src/link.rs
+++ b/src/link.rs
@@ -67,13 +67,10 @@ fn dump_sections<'s, T: Write>(
     Ok(output_size)
 }
 
+/// returns the number of bytes needed to align value
+/// on a given align size (must be a power of 2)
 fn align(value: usize, align: usize) -> usize {
-    let a = value & (align - 1);
-    if a == 0 {
-        0
-    } else {
-        align - a
-    }
+    (value + (align - 1) & !(align - 1)) - value
 }
 
 pub fn link(opts: Opts) -> Result<()> {
-- 
GitLab