From 85bf9e49f5ab4e0681eeda2549dbd4b5faf3ef7f Mon Sep 17 00:00:00 2001 From: Peter Trommler Date: Tue, 19 May 2015 01:21:09 -0500 Subject: [PATCH] Add regression test for #10110. Module C imports a from Module A and b from module B. B does not import anything from A. So if ld is configured to drop DT_NEEDED tags for libraries it does not depend on no DT_NEEDED tag for the temporary shared object containing module A is recorded in the temp SO containing module B. This leads to an undefined symbol when linking the temp SO for module C. Fixes #10110. Reviewed By: austin Differential Revision: https://phabricator.haskell.org/D895 GHC Trac Issues: #10110 --- testsuite/tests/ghci/scripts/T10110.script | 5 +++++ testsuite/tests/ghci/scripts/T10110.stdout | 3 +++ testsuite/tests/ghci/scripts/T10110A.hs | 4 ++++ testsuite/tests/ghci/scripts/T10110B.hs | 3 +++ testsuite/tests/ghci/scripts/T10110C.hs | 5 +++++ testsuite/tests/ghci/scripts/all.T | 1 + 6 files changed, 21 insertions(+) create mode 100644 testsuite/tests/ghci/scripts/T10110.script create mode 100644 testsuite/tests/ghci/scripts/T10110.stdout create mode 100644 testsuite/tests/ghci/scripts/T10110A.hs create mode 100644 testsuite/tests/ghci/scripts/T10110B.hs create mode 100644 testsuite/tests/ghci/scripts/T10110C.hs diff --git a/testsuite/tests/ghci/scripts/T10110.script b/testsuite/tests/ghci/scripts/T10110.script new file mode 100644 index 0000000000..df67c30f2b --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10110.script @@ -0,0 +1,5 @@ +:set -fobject-code +:load T10110A T10110B T10110C +T10110A.a +T10110B.b +T10110C.c diff --git a/testsuite/tests/ghci/scripts/T10110.stdout b/testsuite/tests/ghci/scripts/T10110.stdout new file mode 100644 index 0000000000..21cc9a89d1 --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10110.stdout @@ -0,0 +1,3 @@ +3 +5 +8 diff --git a/testsuite/tests/ghci/scripts/T10110A.hs b/testsuite/tests/ghci/scripts/T10110A.hs new file mode 100644 index 0000000000..8482e7f673 --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10110A.hs @@ -0,0 +1,4 @@ +module T10110A (a) where +{-# NOINLINE a #-} +a :: Int +a = 3 diff --git a/testsuite/tests/ghci/scripts/T10110B.hs b/testsuite/tests/ghci/scripts/T10110B.hs new file mode 100644 index 0000000000..65cfc7efed --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10110B.hs @@ -0,0 +1,3 @@ +module T10110B (b) where +b :: Int +b = 5 diff --git a/testsuite/tests/ghci/scripts/T10110C.hs b/testsuite/tests/ghci/scripts/T10110C.hs new file mode 100644 index 0000000000..70692076a4 --- /dev/null +++ b/testsuite/tests/ghci/scripts/T10110C.hs @@ -0,0 +1,5 @@ +module T10110C (c) where +import T10110A (a) +import T10110B (b) +c :: Int +c = a+b diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T index 85ba5afe17..e0f230185b 100755 --- a/testsuite/tests/ghci/scripts/all.T +++ b/testsuite/tests/ghci/scripts/all.T @@ -217,3 +217,4 @@ test('T10408A', normal, run_command, test('T10408B', normal, run_command, ['$MAKE -s --no-print-directory T10408B']) test('T10248', normal, ghci_script, ['T10248.script']) +test('T10110', normal, ghci_script, ['T10110.script']) -- GitLab