]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Exclude symbols using GOT from code models
authorEvgeny Karpov <evgeny.karpov@microsoft.com>
Thu, 8 Aug 2024 17:54:13 +0000 (19:54 +0200)
committerEvgeny Karpov <eukarpov@gmail.com>
Tue, 19 Nov 2024 13:27:33 +0000 (14:27 +0100)
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.

gcc/config/aarch64/aarch64.cc

index d90134009a47a7f6a29ff51ef2f445f24498bcd4..e5e993d3985048687049ad2bad820d14fe1b0d77 100644 (file)
@@ -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;