Commit 6b5ec08a authored by Alec Theriault's avatar Alec Theriault

Check that libs found by GCC aren't folders

Summary:
We use 'gcc -B<base-location> --print-file-name mylib.a' as a way of
checking if 'gcc' can discover 'mylib.a' at the given location. However,
this can break down if there is a folder caller 'mylib.a' that 'gcc' can
discover. We can guard against this by explicitly checking that the path
returned by 'gcc' is a file.

This may seem like a far-fetched scenario, but since
3d17f1f1, we look for libraries without
any prefix or suffix (ie. 'extra-libraries: softfloat', we look for just
'softfloat' as well as 'softloat.a', 'softfloat.dll.a', etc.) which means
that there might actusally be a folder of that name in one of the base
locations.

Reviewers: Phyx, bgamari, hvr, angerman

Reviewed By: Phyx, angerman

Subscribers: angerman, rwbarton, carter

GHC Trac Issues: #16063

Differential Revision: https://phabricator.haskell.org/D5462
parent 1c9dab22
......@@ -1556,7 +1556,8 @@ searchForLibUsingGcc dflags so dirs = do
l:_ -> l
if (file == so)
then return Nothing
else return (Just file)
else do b <- doesFileExist file -- file could be a folder (see #16063)
return (if b then Just file else Nothing)
-- | Retrieve the list of search directory GCC and the System use to find
-- libraries and components. See Note [Fork/Exec Windows].
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment