x86/cet: Properly output labels in property note section
authorH.J. Lu <hongjiu.lu@intel.com>
Thu, 19 Apr 2018 15:24:53 +0000 (15:24 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Thu, 19 Apr 2018 15:24:53 +0000 (08:24 -0700)
Replace ASM_OUTPUT_LABEL with fprintf so that internal labels in property
note section are unchanged by -fleading-underscore.

gcc/

PR target/85404
* config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
Replace ASM_OUTPUT_LABEL with fprintf.

gcc/testsuite/

PR target/85404
* gcc.target/i386/pr85404.c: New test.

From-SVN: r259498

gcc/ChangeLog
gcc/config/i386/cet.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr85404.c [new file with mode: 0644]

index 89c6c9173a4beadf9a91454a7647253889bd56e8..89a4f3f8a3cdeab329a80dc3eae5c0738d4f4f6d 100644 (file)
@@ -1,3 +1,9 @@
+2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/85404
+       * config/i386/cet.c (file_end_indicate_exec_stack_and_cet):
+       Replace ASM_OUTPUT_LABEL with fprintf.
+
 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/85417
index eb3be1714715d0f5291ff9510c595f63c32849d4..9dd90f0ef2eb063e1cbf826729274e71c2905571 100644 (file)
@@ -57,20 +57,20 @@ file_end_indicate_exec_stack_and_cet (void)
       fprintf (asm_out_file, ASM_LONG " 4f - 1f\n");
       /* note type: NT_GNU_PROPERTY_TYPE_0.  */
       fprintf (asm_out_file, ASM_LONG " 5\n");
-      ASM_OUTPUT_LABEL (asm_out_file, "0");
+      fprintf (asm_out_file, "0:\n");
       /* vendor name: "GNU".  */
       fprintf (asm_out_file, STRING_ASM_OP " \"GNU\"\n");
-      ASM_OUTPUT_LABEL (asm_out_file, "1");
+      fprintf (asm_out_file, "1:\n");
       ASM_OUTPUT_ALIGN (asm_out_file, p2align);
       /* pr_type: GNU_PROPERTY_X86_FEATURE_1_AND.  */
       fprintf (asm_out_file, ASM_LONG " 0xc0000002\n");
       /* pr_datasz.  */\
       fprintf (asm_out_file, ASM_LONG " 3f - 2f\n");
-      ASM_OUTPUT_LABEL (asm_out_file, "2");
+      fprintf (asm_out_file, "2:\n");
       /* GNU_PROPERTY_X86_FEATURE_1_XXX.  */
       fprintf (asm_out_file, ASM_LONG " 0x%x\n", feature_1);
-      ASM_OUTPUT_LABEL (asm_out_file, "3");
+      fprintf (asm_out_file, "3:\n");
       ASM_OUTPUT_ALIGN (asm_out_file, p2align);
-      ASM_OUTPUT_LABEL (asm_out_file, "4");
+      fprintf (asm_out_file, "4:\n");
     }
 }
index 884e77237b3793e724bd450847d1c1b4d8b9aea2..d09c5679822bf6740095af6366a88276ef3be8ac 100644 (file)
@@ -1,3 +1,8 @@
+2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/85404
+       * gcc.target/i386/pr85404.c: New test.
+
 2018-04-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR target/85417
diff --git a/gcc/testsuite/gcc.target/i386/pr85404.c b/gcc/testsuite/gcc.target/i386/pr85404.c
new file mode 100644 (file)
index 0000000..bbf456e
--- /dev/null
@@ -0,0 +1,6 @@
+/* { dg-do assemble } */
+/* { dg-options "-fleading-underscore -mcet -fcf-protection" } */
+
+void func(void) __asm("_func");
+void _func(int x) {}
+void func(void) {}