2crypto: Force exported const arrays to .rodata

Unfortunately, there is no way to define really immutable data in the C
language. Making something 'const' is just a sign, not a cop, because in
theory any code can just cast the const away. Compilers instead use
sophisticated static analysis to determine what data is never written to
by the code and put that into the .rodata (instead of .data) section.
But for externally available global variables, they cannot do that
(because the analyzer doesn't cross compilation units).

Unfortunately some platforms in coreboot really care about everything
being in .rodata (because they're accessing it in-place on flash), and
some "benign" refactoring like making a const variable externally
available can break that. There is no easy fix for that. So in this
case, let's just go for the ugly fix of forcing the offending arrays
into the right section.

TEST=Built SIEMENS_MC_APL2 with CB:40503 and this patch.

Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: Ife508f98e3f8ed40a4488b5fe1967d00a62f347c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2157900
Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
1 file changed