• J
    Fix multiple definition linker error · 5b13a9ca
    Jesse Zhang 提交于
    Looks like we were missing an "extern" in two places. While I was at it,
    also tidy up guc_gp.c by moving the definition of Debug_resource_group
    into cdbvars.c, and add declaration of
    gp_encoding_check_locale_compatibility to cdbvars.h.
    
    This is uncovered by building with GCC 10 and Clang 11, where
    -fno-common is the new default [1][2] (vis a vis -fcommon). I could also
    reproduce this by turning on "-fno-common" in older releases of GCC and
    Clang.
    
    We were relying on a myth (or legacy compiler behavior, rather) that C
    tentative definitions act _just like_ declarations -- in plain English:
    missing an "extern" in a global variable declaration-wannabe wouldn't
    harm you, as long as you don't put an initial value after it.
    
    This resolves #10072.
    
    [1] "3.17 Options for Code Generation Conventions: -fcommon"
    https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Code-Gen-Options.html#index-tentative-definitions
    [2] "Porting to GCC 10" https://gcc.gnu.org/gcc-10/porting_to.html
    [3] "[Driver] Default to -fno-common for all targets" https://reviews.llvm.org/D75056
    
    (cherry picked from commit ee7eb0e8)
    5b13a9ca
cdbvars.c 19.1 KB