diff options
Diffstat (limited to 'dev-lang/ghc/files/ghc-8.0.2-binutils-2.30.patch')
-rw-r--r-- | dev-lang/ghc/files/ghc-8.0.2-binutils-2.30.patch | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/dev-lang/ghc/files/ghc-8.0.2-binutils-2.30.patch b/dev-lang/ghc/files/ghc-8.0.2-binutils-2.30.patch deleted file mode 100644 index f02cb238c6b9..000000000000 --- a/dev-lang/ghc/files/ghc-8.0.2-binutils-2.30.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 358b508051333882d4099acca8f269e6fb2b7d65 Mon Sep 17 00:00:00 2001 -From: Bertram Felgenhauer <int-e@gmx.de> -Date: Thu, 3 May 2018 18:03:53 +0300 -Subject: [PATCH] Compute DW_FORM_block length correctly; also fixes #15068 - -Before this patch, the pprUnwindwExpr function computed the length of -by the following assembly fragment: - - .uleb128 1f-.-1 - <expression data> -1: - -That is, to compute the length, it takes the difference of the label 1 -and the address of the .uleb128 directive, and subtracts 1. - -In #15068 it was reported that `as` from binutils 4.30 has trouble with -evaluating the `.` part of the expression. However, there is actually a -problem with the expression, if the length of the data ever becomes -larger than 128: In that case, the .uleb128 directive will emit more -than 1 byte, and the computed length will be wrong. - -The present patch changes the assembly fragment to use two labels, -which fixes both these problems. - - .uleb128 2f-1f -1: - <expression data> -2: - -Test Plan: validate - -Reviewers: bgamari, osa1 - -Reviewed By: bgamari - -Subscribers: thomie, carter - -GHC Trac Issues: #15068 - -Differential Revision: https://phabricator.haskell.org/D4654 ---- - compiler/nativeGen/Dwarf/Types.hs | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/compiler/nativeGen/Dwarf/Types.hs b/compiler/nativeGen/Dwarf/Types.hs -index 23a2c920e7..579ed0d256 100644 ---- a/compiler/nativeGen/Dwarf/Types.hs -+++ b/compiler/nativeGen/Dwarf/Types.hs -@@ -492,9 +492,11 @@ pprUnwindExpr spIsCFA expr - pprE (UwPlus u1 u2) = pprE u1 $$ pprE u2 $$ pprByte dW_OP_plus - pprE (UwMinus u1 u2) = pprE u1 $$ pprE u2 $$ pprByte dW_OP_minus - pprE (UwTimes u1 u2) = pprE u1 $$ pprE u2 $$ pprByte dW_OP_mul -- in text "\t.uleb128 1f-.-1" $$ -- DW_FORM_block length -+ in text "\t.uleb128 2f-1f" $$ -- DW_FORM_block length -+ -- computed as the difference of the following local labels 2: and 1: -+ text "1:" $$ - pprE expr $$ -- text "1:" -+ text "2:" - - -- | Generate code for re-setting the unwind information for a - -- register to @undefined@ --- -2.17.0 - |