From 6b2f09916e0c8c5f37c9fbe08eb076476501c8d6 Mon Sep 17 00:00:00 2001 From: Sylvain Henry Date: Fri, 8 Mar 2019 12:53:43 +0100 Subject: NCG: correctly escape path strings on Windows (#16389) GHC native code generator generates .incbin and .file directives. We need to escape those strings correctly on Windows (see #16389). --- compiler/nativeGen/AsmCodeGen.hs | 2 +- compiler/nativeGen/PprBase.hs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'compiler/nativeGen') diff --git a/compiler/nativeGen/AsmCodeGen.hs b/compiler/nativeGen/AsmCodeGen.hs index b866741995..84c6a84845 100644 --- a/compiler/nativeGen/AsmCodeGen.hs +++ b/compiler/nativeGen/AsmCodeGen.hs @@ -461,7 +461,7 @@ cmmNativeGens dflags this_mod modLoc ncgImpl h dbgMap = go nonDetEltsUFM $ fileIds' `minusUFM` fileIds -- See Note [Unique Determinism and code generation] pprDecl (f,n) = text "\t.file " <> ppr n <+> - doubleQuotes (ftext f) + pprFilePathString (unpackFS f) emitNativeCode dflags h $ vcat $ map pprDecl newFileIds ++ diff --git a/compiler/nativeGen/PprBase.hs b/compiler/nativeGen/PprBase.hs index 1f068c261b..84f9492032 100644 --- a/compiler/nativeGen/PprBase.hs +++ b/compiler/nativeGen/PprBase.hs @@ -143,7 +143,9 @@ pprBytes bs = sdocWithDynFlags $ \dflags -> else unsafePerformIO $ do bFile <- newTempName dflags TFL_CurrentModule ".dat" BS.writeFile bFile bs - return $ text "\t.incbin \"" <> text bFile <> text "\"\n\t.byte 0" + return $ text "\t.incbin " + <> pprFilePathString bFile -- proper escape (see #16389) + <> text "\n\t.byte 0" {- Note [Embedding large binary blobs] -- cgit v1.2.1