ARC: Don't use COMMON section for global not-initialized variables
authorAlexey Brodkin <alexey.brodkin@synopsys.com>
Thu, 11 Oct 2018 20:12:05 +0000 (23:12 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Mon, 15 Oct 2018 10:35:17 +0000 (13:35 +0300)
By default GCC puts global non-initialized variables in COMMON section.
And we used to ignore existence of COMMON section in our linker
scripts though smart LD silently appended it right after .bss.

And the problem here is variables from COMMON section even though
require zeroing in run-time were not zeroed as they were placed
right after __bss_end symbol.

It was a pure luck we never faced serious problem due to this,
but now it is fixed.

Now as for some other architectures we'll just force GCC to put
those global variables in normal .bss section.

This solution is much nicer than adding COMMON section to each and
every linker script.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/config.mk

index d255c90e3540ed9628bc5be5a31dffc8fea69eb5..18005d999301fd59288edbded22b504d892c8d56 100644 (file)
@@ -43,7 +43,7 @@ PLATFORM_CPPFLAGS += -mcpu=archs
 endif
 
 PLATFORM_CPPFLAGS += -ffixed-r25 -D__ARC__ -gdwarf-2 -mno-sdata
-PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
+PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections -fno-common
 
 # Needed for relocation
 LDFLAGS_FINAL += -pie --gc-sections