Cody Addison via llvm-dev
2019-Jan-24 22:48 UTC
[llvm-dev] User defined sections as SHT_NOBITS
I've noticed that variables in user defined sections are always type SHT_PROGBITS instead of SHT_NOBITS in the ELF file, even if the variable is uninitialized. __attribute__((section("mybss"))) int array[100]; In isSuitableForBSS(), there is an explicit check that the global variable does not have a section. If I remove this code, I get the expected result. I tracked the change down to a commit 10 years ago which fixed PR4619. I'm not entirely sure why this was an issue, but I get the impression that at the time having a section kind of bss meant the section is actually .bss, whereas today the section kind is really describing the attributes of a section which could have any name. Does anyone have any additional information on this restriction, or issues with this change? For background, this is causing a problem in an embedded application where all sections allocated to RAM are expected to be uninitialized and sections allocated to Flash are initialized.