Hi everyone, I am trying to fix #61880 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61880 but will need some guidance as I am a complete newbie.
The problem is concerns gccgo and the way the binaries it generates link with the rest of the objects. I have given a really tiny test case in the bug, but the relevant part is this: We try to use a function written in Go from C. Thus we have something written in Go that is compiled, something written in C that is compiled and them gluing them together with the layer provided with the cgo tool. Symbol names from the different parts need to be the same in order for the linker to match them. The names do not match. I am not sure which side of the naming the problem stands - i.e. if A!=B, should we change A, B or both to match. The symbol/assembler name (I do not know what is the right word) that is generated in the .h header file is: extern int Cgoexp_Dummy (int p0) __asm__("cgo_problem_example_com_demo.Cgoexp_Dummy"); -------------------------------------------------------------^ The symbol that exists in the object file is: cgo_problem_example.com_demo.Cgoexp_Dummy -------------------^ Thus we can either fix __asm__("cgo_problem_example_com_demo.Cgoexp_Dummy") to be __asm__("cgo_problem_example_com.demo.Cgoexp_Dummy") or fix the object name to be cgo_problem_example_com_demo.Cgoexp_Dummy This probably depends on which characters are valid in symbol names. If having two or more '.' is OK then I could patch the cgo tool that generates the __asm__ part If dots have special meaning or there is a custom mangling that has to be considered - I would need to find the part of gcc that issues the object names (which I still cannot identify, any guides welcome) Kind regards: al_shopov