[gas,aarch64] : fix build breakage for aarch64-pe

Message ID 20221116232132.1009459-1-indu.bhagat@oracle.com
State Accepted
Headers
Series [gas,aarch64] : fix build breakage for aarch64-pe |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Indu Bhagat Nov. 16, 2022, 11:21 p.m. UTC
  Hi,

  This patch should fix the build breakage on aarch64-pe caused by the SFrame
  patch series.

  The issue was that the definitions related to SFrame APIs were not guarded by
  OBJ_ELF, they were errneously guarded by a more relaxed condition of OBJ_ELF
  || OBJ_COFF, hence causing build failures.

Testing notes:
  - Tested build and make -k check for selected folders for --target=aarch64-pe.

Thanks
Indu

---------------------

SFrame is supported for ELF only.  Keep the definitions and declarations
guarded with OBJ_ELF consistently.

ChangeLog:

	* gas/config/tc-aarch64.h:  Guard SFrame related definitions
	  with OBJ_ELF.
---
 gas/config/tc-aarch64.h | 42 ++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)
  

Comments

Alan Modra Nov. 17, 2022, 3:29 a.m. UTC | #1
On Wed, Nov 16, 2022 at 03:21:32PM -0800, Indu Bhagat via Binutils wrote:
> --- a/gas/config/tc-aarch64.h
> +++ b/gas/config/tc-aarch64.h
> @@ -239,6 +239,28 @@ struct aarch64_segment_info_type
>  /* We want .cfi_* pseudo-ops for generating unwind info.  */
>  #define TARGET_USE_CFIPOP              1
>  
> +/* CFI hooks.  */
> +#define tc_regname_to_dw2regnum            tc_aarch64_regname_to_dw2regnum
> +#define tc_cfi_frame_initial_instructions  tc_aarch64_frame_initial_instructions
> +
> +extern void aarch64_after_parse_args (void);
> +#define md_after_parse_args() aarch64_after_parse_args ()
> +
> +#else /* Neither OBJ_ELF nor OBJ_COFF.  */
> +#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
> +#endif
> +
> +#if defined OBJ_ELF || defined OBJ_COFF
> +
> +# define EXTERN_FORCE_RELOC 			1
> +# define tc_fix_adjustable(FIX) 		1
> +/* Values passed to md_apply_fix don't include the symbol value.  */
> +# define MD_APPLY_SYM_VALUE(FIX) 		0

OK, but seeing as you are moving things around, let's move the above
three defines before the #else to get rid of another #if.

> +
> +#endif
> +
> +#ifdef OBJ_ELF
> +
>  /* Whether SFrame unwind info is supported.  */
>  extern bool aarch64_support_sframe_p (void);
>  #define support_sframe_p aarch64_support_sframe_p
> @@ -268,25 +290,7 @@ extern offsetT aarch64_sframe_cfa_ra_offset (void);
>  unsigned char aarch64_sframe_get_abi_arch (void);
>  #define sframe_get_abi_arch aarch64_sframe_get_abi_arch
>  
> -/* CFI hooks.  */
> -#define tc_regname_to_dw2regnum            tc_aarch64_regname_to_dw2regnum
> -#define tc_cfi_frame_initial_instructions  tc_aarch64_frame_initial_instructions
> -
> -extern void aarch64_after_parse_args (void);
> -#define md_after_parse_args() aarch64_after_parse_args ()
> -
> -#else /* Not OBJ_ELF.  */
> -#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
> -#endif
> -
> -#if defined OBJ_ELF || defined OBJ_COFF
> -
> -# define EXTERN_FORCE_RELOC 			1
> -# define tc_fix_adjustable(FIX) 		1
> -/* Values passed to md_apply_fix don't include the symbol value.  */
> -# define MD_APPLY_SYM_VALUE(FIX) 		0
> -
> -#endif
> +#endif /* OBJ_ELF  */
>  
>  #define MD_PCREL_FROM_SECTION(F,S) md_pcrel_from_section(F,S)
>  
> -- 
> 2.37.2
  

Patch

diff --git a/gas/config/tc-aarch64.h b/gas/config/tc-aarch64.h
index 91412ce8292..00efc26263c 100644
--- a/gas/config/tc-aarch64.h
+++ b/gas/config/tc-aarch64.h
@@ -239,6 +239,28 @@  struct aarch64_segment_info_type
 /* We want .cfi_* pseudo-ops for generating unwind info.  */
 #define TARGET_USE_CFIPOP              1
 
+/* CFI hooks.  */
+#define tc_regname_to_dw2regnum            tc_aarch64_regname_to_dw2regnum
+#define tc_cfi_frame_initial_instructions  tc_aarch64_frame_initial_instructions
+
+extern void aarch64_after_parse_args (void);
+#define md_after_parse_args() aarch64_after_parse_args ()
+
+#else /* Neither OBJ_ELF nor OBJ_COFF.  */
+#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
+#endif
+
+#if defined OBJ_ELF || defined OBJ_COFF
+
+# define EXTERN_FORCE_RELOC 			1
+# define tc_fix_adjustable(FIX) 		1
+/* Values passed to md_apply_fix don't include the symbol value.  */
+# define MD_APPLY_SYM_VALUE(FIX) 		0
+
+#endif
+
+#ifdef OBJ_ELF
+
 /* Whether SFrame unwind info is supported.  */
 extern bool aarch64_support_sframe_p (void);
 #define support_sframe_p aarch64_support_sframe_p
@@ -268,25 +290,7 @@  extern offsetT aarch64_sframe_cfa_ra_offset (void);
 unsigned char aarch64_sframe_get_abi_arch (void);
 #define sframe_get_abi_arch aarch64_sframe_get_abi_arch
 
-/* CFI hooks.  */
-#define tc_regname_to_dw2regnum            tc_aarch64_regname_to_dw2regnum
-#define tc_cfi_frame_initial_instructions  tc_aarch64_frame_initial_instructions
-
-extern void aarch64_after_parse_args (void);
-#define md_after_parse_args() aarch64_after_parse_args ()
-
-#else /* Not OBJ_ELF.  */
-#define GLOBAL_OFFSET_TABLE_NAME "__GLOBAL_OFFSET_TABLE_"
-#endif
-
-#if defined OBJ_ELF || defined OBJ_COFF
-
-# define EXTERN_FORCE_RELOC 			1
-# define tc_fix_adjustable(FIX) 		1
-/* Values passed to md_apply_fix don't include the symbol value.  */
-# define MD_APPLY_SYM_VALUE(FIX) 		0
-
-#endif
+#endif /* OBJ_ELF  */
 
 #define MD_PCREL_FROM_SECTION(F,S) md_pcrel_from_section(F,S)