diff --git a/bolt/lib/Rewrite/RewriteInstance.cpp b/bolt/lib/Rewrite/RewriteInstance.cpp
--- a/bolt/lib/Rewrite/RewriteInstance.cpp
+++ b/bolt/lib/Rewrite/RewriteInstance.cpp
@@ -217,6 +217,11 @@
   cl::Hidden,
   cl::cat(BoltCategory));
 
+static cl::opt<bool> SkipPhdrRewrite(
+    "skip-phdr-rewrite",
+    cl::desc("Developer use only: skip updating program headers"),
+    cl::ReallyHidden, cl::cat(BoltCategory));
+
 cl::opt<bool>
 TrapOldCode("trap-old-code",
   cl::desc("insert traps in old function bodies (relocation mode)"),
@@ -3642,6 +3647,9 @@
 }
 
 void RewriteInstance::patchELFPHDRTable() {
+  if (opts::SkipPhdrRewrite)
+    return;
+
   auto ELF64LEFile = cast<ELF64LEObjectFile>(InputFile);
   const ELFFile<ELF64LE> &Obj = ELF64LEFile->getELFFile();
   raw_fd_ostream &OS = Out->os();