From 014883f2f4cfc4fd64fe9aa5f561a971e2ed1345 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Fri, 19 Feb 2021 09:31:03 +0100 Subject: Fix regression on PowerPC / Diab On PowerPC/Diab, common declarations must not be used for small data sections. Add a `~common` option to `PrintAsmaux.variable_section` to control the use of common declarations. The default is whatever is specified on the command line using the `-fcommon` and `-fno-common` options. Use `~common:false` for `Section_small_data` on PowerPC / Diab. Note that on PowerPC/Linux, GCC uses common declarations for uninitialized variables in small data section, so we keep doing this in CompCert as well. --- powerpc/TargetPrinter.ml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'powerpc') diff --git a/powerpc/TargetPrinter.ml b/powerpc/TargetPrinter.ml index e32348a3..52d30e33 100644 --- a/powerpc/TargetPrinter.ml +++ b/powerpc/TargetPrinter.ml @@ -212,8 +212,10 @@ module Diab_System : SYSTEM = let name_of_section = function | Section_text -> ".text" - | Section_data i -> variable_section ~sec:".data" ~bss:".bss" i - | Section_small_data i -> variable_section ~sec:".sdata" ~bss:".sbss" i + | Section_data i -> + variable_section ~sec:".data" ~bss:".bss" i + | Section_small_data i -> + variable_section ~sec:".sdata" ~bss:".sbss" ~common:false i | Section_const _ -> ".text" | Section_small_const _ -> ".sdata2" | Section_string -> ".text" -- cgit