Hi Def, Thanks for all the details. I will try these options.
Regards Dharani On Wed, Jan 1, 2025 at 12:42 AM Def Ceb <mikk.mar...@gmail.com> wrote: > There are two places where this information can come from: the pclntab, > and DWARF debug information. > > The pclntab has a mapping from program counter locations to filenames > and line numbers, which makes stack traces more useful. > Files which don't contain any code, only things like type definitions, > global variables and constants, will not be listed. Since they do not > have any mappings in the pclntab. So these files will not be listed here. > > The DWARF debug info should also list source files for the binary, among > other things. This is a bit more likely to be stripped out to save > space, but if present, it's more useful as C-based source files coming > from cgo will also be listed. The pclntab should almost always be > present and readable, though might be unreachable by `go tool objdump` > for dumping if the binary is stripped. > > If the binary hasn't been stripped, then extracting this info via DWARF > is fairly simple with elfutils[1]. > > eu-srcfiles -e /path/to/binary > > Alternatively, for an unstripped binary via pclntab with the below > one-liner: > > go tool objdump /path/to/binary | grep '^TEXT ' | grep -o '(SB) .*' | > sed 's/^.....//g' | sort -u > > For a stripped binary with an untampered pclntab, something could be > kludged together with the output of redress[2] (have to parse the output > a bit to get the bare paths). Left as an exercise to the reader. > e.g > > redress src -suv /path/to/binary > > Or just writing something yourself with gore[3] directly. > > If the binary's pclntab has been tampered with, e.g by compiling the > source code with garble[4], then all bets are off, of course. > > [1] https://sourceware.org/elfutils/ > [2] https://github.com/goretk/redress > [3] https://github.com/goretk/gore > [4] https://github.com/burrowers/garble > > Tharaneedharan Vilwanathan: > > Hi All, > > > > I have a quick question. > > > > Is there a way to get the list of source code files of a Go binary? > > > > Here is one solution I got: > > $ strings /home/dharani/go1.22.6.linux-amd64/go/bin/gofmt | grep > > "\.go$"| sort -ur > > unicode/utf8/utf8.go > > unicode/tables.go > > unicode/letter.go > > unicode/graphic.go > > unicode/digit.go > > time/zoneinfo_unix.go > > ... > > > > But I am wondering if there is a better way. Please let me know. > > > > Regards > > dharani > > > > -- > > You received this message because you are subscribed to the Google > > Groups "golang-nuts" group. > > To unsubscribe from this group and stop receiving emails from it, send > > an email to golang-nuts+unsubscr...@googlegroups.com <mailto:golang- > > nuts+unsubscr...@googlegroups.com>. > > To view this discussion visit https://groups.google.com/d/msgid/golang- > > nuts/CAN- > > HoC%3DdZW0sRTi4P%3DPjOxupOTrPbQLf10te01OMNotfoOyLRQ%40mail.gmail.com > > <https://groups.google.com/d/msgid/golang-nuts/CAN- > > HoC%3DdZW0sRTi4P%3DPjOxupOTrPbQLf10te01OMNotfoOyLRQ%40mail.gmail.com? > > utm_medium=email&utm_source=footer>. > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/golang-nuts/741b3ec1-1699-4f3a-b0fc-bc61a5a0b5f5%40gmail.com > . > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/CAN-HoCm7xcybdOrMHgH5H7xe6XQKp4YgMxpxHyHOLeFyAT9wzw%40mail.gmail.com.