From: Evgeny Karpov Date: Thu, 8 Aug 2024 17:54:13 +0000 (+0200) Subject: aarch64: Exclude symbols using GOT from code models X-Git-Tag: basepoints/gcc-16~4099 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fef211ff733f711f540634189c47ce6902386f10;p=thirdparty%2Fgcc.git aarch64: Exclude symbols using GOT from code models Symbols using GOT are not supported by the aarch64-w64-mingw32 target and should be excluded from the code models. gcc/ChangeLog: * config/aarch64/aarch64.cc (aarch64_classify_symbol): Disable GOT for PECOFF target. --- diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index d90134009a47..e5e993d39850 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -21241,7 +21241,8 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) case AARCH64_CMODEL_TINY: /* With -fPIC non-local symbols use the GOT. For orthogonality always use the GOT for extern weak symbols. */ - if ((flag_pic || SYMBOL_REF_WEAK (x)) + if (!TARGET_PECOFF + && (flag_pic || SYMBOL_REF_WEAK (x)) && !aarch64_symbol_binds_local_p (x)) return SYMBOL_TINY_GOT; @@ -21263,7 +21264,8 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) case AARCH64_CMODEL_SMALL_SPIC: case AARCH64_CMODEL_SMALL_PIC: case AARCH64_CMODEL_SMALL: - if ((flag_pic || SYMBOL_REF_WEAK (x)) + if (!TARGET_PECOFF + && (flag_pic || SYMBOL_REF_WEAK (x)) && !aarch64_symbol_binds_local_p (x)) return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC ? SYMBOL_SMALL_GOT_28K : SYMBOL_SMALL_GOT_4G;