Fix emitting `DehydratedDataCommand.ZeroFill` when alignment is high (#82155)
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Wed, 15 Feb 2023 21:11:18 +0000 (06:11 +0900)
committerGitHub <noreply@github.com>
Wed, 15 Feb 2023 21:11:18 +0000 (06:11 +0900)
The alignment might not fit into a single byte.

src/coreclr/tools/aot/ILCompiler.Compiler/Compiler/DependencyAnalysis/DehydratedDataNode.cs

index 7611bf9..fcaf3c4 100644 (file)
@@ -123,7 +123,10 @@ namespace ILCompiler.DependencyAnalysis
                     int oldPosition = dehydratedSegmentPosition;
                     dehydratedSegmentPosition = dehydratedSegmentPosition.AlignUp(o.Alignment);
                     if (dehydratedSegmentPosition > oldPosition)
-                        builder.EmitByte(DehydratedDataCommand.EncodeShort(DehydratedDataCommand.ZeroFill, dehydratedSegmentPosition - oldPosition));
+                    {
+                        int written = DehydratedDataCommand.Encode(DehydratedDataCommand.ZeroFill, dehydratedSegmentPosition - oldPosition, buff);
+                        builder.EmitBytes(buff, 0, written);
+                    }
                 }
 
                 int currentReloc = 0;