diff --git a/src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs b/src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs index df4546469bd01a..898c4b31fad652 100644 --- a/src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs +++ b/src/coreclr/tools/Common/Compiler/ObjectWriter/MachObjectWriter.cs @@ -137,6 +137,7 @@ private void LayoutSections(bool recordFinalLayout, ref uint fileOffset, out uin { ulong virtualAddress = 0; byte sectionIndex = 1; + uint initialFileOffset = uint.MaxValue; segmentFileSize = 0; segmentSize = 0; @@ -149,9 +150,10 @@ private void LayoutSections(bool recordFinalLayout, ref uint fileOffset, out uin if (section.IsInFile) { + initialFileOffset = Math.Min(initialFileOffset, fileOffset); section.FileOffset = fileOffset; fileOffset += (uint)section.Size; - segmentFileSize = Math.Max(segmentFileSize, fileOffset); + segmentFileSize = Math.Max(segmentFileSize, fileOffset - initialFileOffset); } else {