On Mon, Sep 25, 2017 at 04:01:55PM +0000, David Laight wrote:
From: Segher Boessenkool
quoted
The compiler puts this item in .sdata, for 32-bit. There is no .srodata,
so if it wants to use a small data section, it must use .sdata .
Non-external, non-referenced symbols are not put in .sdata, that is the
difference you see with the "static".
I don't think there is a bug here. If you think there is, please open
a GCC bug.
The .sxxx sections are for 'small' data that can be accessed (typically)
using small offsets from a global register.
This means that all sections must be adjacent in the image.
So you can't really have readonly small data.
My guess is that the linker script is putting .srodata in with .sdata.
.srodata does not *exist* (in the ABI).
Segher