From e8e7f9cad8408e3b24a8674ac14d926cb0aba91f Mon Sep 17 00:00:00 2001 From: Brendan Hansknecht Date: Wed, 15 Sep 2021 08:58:23 -0700 Subject: [PATCH] Add executable file permissions --- linker/src/lib.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/linker/src/lib.rs b/linker/src/lib.rs index fd26990c18..7d57238ec9 100644 --- a/linker/src/lib.rs +++ b/linker/src/lib.rs @@ -20,6 +20,7 @@ use std::io; use std::io::{BufReader, BufWriter}; use std::mem; use std::os::raw::c_char; +use std::os::unix::fs::PermissionsExt; use std::path::Path; use std::process::Command; use std::time::{Duration, SystemTime}; @@ -1525,6 +1526,12 @@ fn surgery_impl( let flushing_data_duration = flushing_data_start.elapsed().unwrap(); exec_file.set_len(offset as u64 + 1)?; + + // Make sure the final executable has permision to execute. + let mut perms = fs::metadata(out_filename)?.permissions(); + perms.set_mode(perms.mode() | 0o111); + fs::set_permissions(out_filename, perms)?; + let total_duration = total_start.elapsed().unwrap(); if verbose || time {