Hadrian build with DWARF information doesn't contain as much debug information as I would expect

Sylvain Henry sylvain at haskus.fr
Sun May 3 09:28:39 UTC 2020


> I wonder how gdb knows which shared objects to load and what addresses to use

Perhaps it reads /proc/PID/maps (or /proc/PID/map_files/*)?

Cheers,
Sylvain

On 03/05/2020 09:55, Matthew Pickering wrote:
> Thanks Adam for the tip about dynamic linking, as always.
>
> He was right that the debug information was in the relevant .so files
> and that when I statically linked GHC the information was included (as
> with cabal). The issue was my program which read the dwarf information
> did not work properly for dynamically linked executables (and still
> doesn't, I wonder how gdb knows which shared objects to load and what
> addresses to use).
>
> Cheers,
>
> Matt
>
> On Sun, May 3, 2020 at 8:20 AM Adam Sandberg Eriksson
> <adam at sandbergericsson.se> wrote:
>> I don't know how you read the DWARF info but maybe it's missing info from dynamic libraries? If your GHC is dynamically linked the library DWARF info might be available in their respective .so's.
>>
>> Cheers,
>> Adam Sandberg Eriksson
>>
>> On Sat, 2 May 2020, at 23:08, Matthew Pickering wrote:
>>> I followed the instructions on the wiki to enable debug symbols in my
>>> build of GHC.
>>> (https://gitlab.haskell.org/ghc/ghc/-/wikis/building/hadrian#enabling-dwarf-debug-symbols)
>>>
>>> So I added these flags to may hadrian.settings file
>>>
>>> stage1.*.ghc.hs.opts += -g3
>>> stage1.*.cabal.configure.opts += --disable-library-stripping
>>> --disable-executable-stripping
>>> stage1.ghc-bin.ghc.link.opts += -eventlog
>>>
>>> The resulting executable has debug information in it for the
>>> executable component but not for any of the libraries in including the
>>> compiler library.
>>>
>>> ("../sysdeps/x86_64/start.S",Just 4414944,Just 4414987,139633489318136)
>>> ("init.c",Nothing,Nothing,139633489318136)
>>> ("../sysdeps/x86_64/crti.S",Nothing,Nothing,139633489318136)
>>> ("ghc/Main.hs",Just 4415312,Just 4615455,139633489318136)
>>> ("ghc/GHCi/Leak.hs",Just 4615480,Just 4623414,139633489318136)
>>> ("ghc/GHCi/UI.hs",Just 4623440,Just 5461990,139633489318136)
>>> ("ghc/GHCi/UI/Info.hs",Just 5461992,Just 5571230,139633489318136)
>>> ("ghc/GHCi/UI/Monad.hs",Just 5571232,Just 5679695,139633489318136)
>>> ("ghc/GHCi/UI/Tags.hs",Just 5679696,Just 5704775,139633489318136)
>>> ("ghc/GHCi/Util.hs",Just 24,Just 173,139633489318136)
>>> ("../sysdeps/x86_64/crtn.S",Nothing,Nothing,139633489318136)
>>>
>>> I tried building a project with cabal and the resulting executable had
>>> debug information for every file in the dependencies as well as the
>>> main project.
>>>
>>> So how do I convince hadrian to include the correct information? Is it
>>> a bug in hadrian?
>>>
>>> I checked the command line when building the library and `-g3` is passed.
>>>
>>> Cheers,
>>>
>>> Matt
>>> _______________________________________________
>>> ghc-devs mailing list
>>> ghc-devs at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs


More information about the ghc-devs mailing list