I am using the ARM clang tool chain version 6.10.1.
The linker is showing the following warning:
Warning: L6776W: The debug frame in .debug_frame(CHostComm.o) does not describe an executable section.
I have no idea why this is coming or how to solve the problem. Do I need to change the command line parameters for the linker or change something in my code?
Hi,
Thank you for the feedback. I have been able to reproduce this issue and it will be resolved in a future release. As this is a warning, can you continue your project until we resolve the issue in the next release cycle?
This is benign warning which the arm linker emits as it finds debug info which has references to an "invalid group" section. This generally happens when you code using C++ templates, the armclang organizes the code for each template iinto different groups but doesn't put the respective debug info in the same group. So if one group gets removed it leaves behind the debug info which references code from an invalid group. armclang does not produce a separate .debug_frame section for each group and hence the linker issues this warning.
We are able to reproduce this scenario and it will be resolved in a future release. Since this is a warning, you can suppress it by passing "--diag_suppress L6776W" as a linker flag which will allow you to continue with your project.
Let me know if you are still having problems.
Thanks
Peterson
hello, I also got this warning since some months ago.
Sometimes, it is referenced to AAA.o, I just ignore it. But if I modify AAA.cpp, it will be referenced to BBB.o
However, there is no explicit code using C++ templates in any file in my project.
Thank you for the explaination. I am surprised that a product with version 6.10 still has such a bug! Am I the first person to use C++ templates? This does not convince me that the tool is well tested before release.
Hi, I'm Paul Black, Product Manager for Arm Compilers.
Clearly this warning has caused some annoyance, and that's something we like to avoid - using the Arm Compiler should be a stress-free experience! The Arm Compiler is of course widely used for C++ including templates, and we devote significant effort to our testing. However compilers are complex tools and face a virtually infinite variation in incoming code, and it's inevitable that defects will sometimes slip through testing for any compiler. In this particular case, the code generated by the compiler would have been correct and high performance, but the compiler has issued a benign warning.
I appreciate that even a benign warning can be an irritation and a distraction, and I would like to thank you for bringing this to our attention. I'm always eager to hear feedback from users, and I'm always eager to talk about ways we could improve the compiler and the user experience - we'll look into how this warning slipped out under our radar.
Paul.
Hello Paul
Thank you for the reply.
I am trying to convert a project from the armcc to armclang toolchain. After a week of endless warnings and errors messages, I am still not able to link the project.
Is this the correct forum to ask about linker errors? I have been communicating with Mr. Stephen Wang from arm support, but not really getting any nearer to a solution.
Does arm have a utility simialr to the gnu objdump to analyse the contents of the object files?
I am also getting the following warning:
Warning: L6439W: Multiply defined Global Symbol OMNullValue<unsigned char>::get()::nullSet defined in invalid_group(CHostComm.o) rejected in favor of Symbol defined in .bss._ZZN11OMNullValueIhE3getEvE7nullSet(PKG_G_FirmwareUpdate.o).
Is this a similar bug? It also has to do with templates and invalid groups.
Apologies since you ran into warnings again.
In this case, the "L6439W" warning is the same as "L6776W" in a slightly different shade.
The background is the same as explained for L6776W, where there is a symbol defined in a comdat group in two input files and the linker first selects a group from the first file but later decides to instead use a group from the second file because it is smaller or more efficient. In that case, the linker ends up with two definitions of this symbol from both groups and reported a warning about it.
This is mainly the order in which the objects are provided to the linker. Sometimes reordering the sequence in which the objects are consumed into the linker can help as the linker would spot the optimised group first then it when it encounters the group from another file it will recognise if it has selected the correct one and not fall into this situation. However we can't always control the of some objects as they come from the library and hence could run into the same again.
This is a harmless warning and should not hamper your development. We did already pick this up in our internal testing and a fix for it is on the way. We aim to have both warnings resolved in the next release which is targeted at the end of October.
I hope this has not caused you any inconvenience and you can progress further with your development.
Best regards,
Hi amanning,
Are you still having problems migrating your project from armcc to armclang?
Is there anything else I can help you with?
Here is the link to the migration guide from armcc to armclang: https://developer.arm.com/docs/100068/latest
Further documentation about armclang can be found here: https://developer.arm.com/products/software-development-tools/compilers/arm-compiler/documentation/version-6-10
>>I have been communicating with Mr. Stephen Wang from arm support
Could you provide me with the support case IDs you raised?
Hi Peterson
You sent me a privat message, but I cannot reply to it as the return address is <noreply@arm.com>. Can you send me an email address to reply to you. I do not want to publish the answer to your questions here.
I have connected with you and sent you my email. Please get in touch.