This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Trying to fix #61880, what characters are valid in assembler/symbol names

Hi everyone,

I am trying to fix #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)

The symbol that exists in the object file is:

Thus we can either fix
__asm__("cgo_problem_example_com_demo.Cgoexp_Dummy") to be
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:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]