On Tue, Oct 16, 2012 at 11:51 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Tue, Oct 16, 2012 at 04:19:09PM -0700, Xinliang David Li wrote: >> I am not sure -- fasan is an error detecting feature -- the goal is to >> find bugs -- missing handling of commons etc. are not desirable. >> Besides if ABI changes consistently for all objects, why does it >> matter? >> >> Or making common/decl_one_only protected under an additional option. > > Note that LLVM doesn't protect common vars nor comdat linkage vars either > (at least 3.1 release), as can be seen on > > struct A { int a; char b[64]; }; > inline A *foo () > { > static A a; > return &a; > } > A *(*p) () = foo; > > C++ testcase and > > int i, j, k; > int l = 26; > struct S { char buf[32]; } m, n = { { 1 } }; > > C testcase. Only p, l and n vars are protected. For common, there is a > possibility to just use -fno-common, unless your sources rely on common > vars.
Ok -- but I doubt it is due to the concern of ABI breakage. Note that the debug version of libstdc++ (for error checking) is ABI breaking too. David > > Jakub