-
Notifications
You must be signed in to change notification settings - Fork 17.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
plugin: json - gcc failed - version node not found for symbol type ...@... #19529
Comments
This must be some kind of interaction with the way that the GNU linker uses '@' in a symbol name to separate the name from the version. |
Oddly, we do not stumble over the GNU linker with this symbol name in a binary:
Hmm. |
I spent a while trying to move the symbol renaming logic later in cmd/link (specifically, after all symbols were loaded). Turns out it is very complicated. Symbols are partially de-duplicated as they are loaded. See the objReader.readSym method. If the renaming happens later, then a symbol that has previously been renamed will not be de-duplicated. For example, So to move the renaming later, all the de-duplication logic would have to be untangled from the object file reading. This is probably a worthy project, some already has been done (see dupTextSyms, which moves text symbol de-duplication to after loading), but it is a significant project. |
Change https://golang.org/cl/67312 mentions this issue: |
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (
go version
)?go version go1.8 linux/amd64
What operating system and processor architecture are you using (
go env
)?What did you do?
If possible, provide a recipe for reproducing the error.
A complete runnable program is good.
A link on play.golang.org is best.
What did you expect to see?
I expect to be able to build the above code as a plugin:
go build -buildmode=plugin -o issue.so
What did you see instead?
Observations
@
sign in the json tagThe text was updated successfully, but these errors were encountered: