[LD, AArch64] Move ELF options behind -z
authorSudakshina Das <sudi.das@arm.com>
Thu, 6 Jun 2019 11:21:14 +0000 (12:21 +0100)
committerSudakshina Das <sudi.das@arm.com>
Thu, 6 Jun 2019 11:21:14 +0000 (12:21 +0100)
This patch moves the current AArch64 ld options of --force-bti
and --pac-plt to -z force-bti and -z pac-plt since these are
ELF specific options.

*** bfd/ChangeLog ***

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

* bfd-in.h: Change comment.
* bfd-in2.h: Regenerate.
* elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update warning.
* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties):
Likwise.

*** ld/ChangeLog ***

2019-06-06  Sudakshina Das  <sudi.das@arm.com>

* NEWS: Update options names.
* emultempl/aarch64elf.em (OPTION_FORCE_BTI, OPTION_PAC_PLT): Remove.
(PARSE_AND_LIST_LONGOPTS): Remove force-bti and pac-plt.
(PARSE_AND_LIST_OPTIONS): Update to -z.
(PARSE_AND_LIST_ARGS_CASE_Z_AARCH64): New.
(PARSE_AND_LIST_ARGS_CASE_Z): Add PARSE_AND_LIST_ARGS_CASE_Z_AARCH64.
(PARSE_AND_LIST_ARGS_CASES): Move cases for these options.
* testsuite/ld-aarch64/bti-pac-plt-1.d: Update option.
* testsuite/ld-aarch64/bti-pac-plt-2.d: Likewise.
* testsuite/ld-aarch64/bti-plt-1.d: Likewise.
* testsuite/ld-aarch64/bti-plt-2.d: Likewise.
* testsuite/ld-aarch64/bti-plt-3.d: Likewise.
* testsuite/ld-aarch64/bti-plt-4.d: Likewise.
* testsuite/ld-aarch64/bti-plt-6.d: Likewise.
* testsuite/ld-aarch64/bti-plt-7.d: Likewise.
* testsuite/ld-aarch64/bti-warn.d: Likewise.
* testsuite/ld-aarch64/pac-plt-1.d: Likewise.
* testsuite/ld-aarch64/pac-plt-2.d: Likewise.

19 files changed:
bfd/ChangeLog
bfd/bfd-in.h
bfd/bfd-in2.h
bfd/elfnn-aarch64.c
bfd/elfxx-aarch64.c
ld/ChangeLog
ld/NEWS
ld/emultempl/aarch64elf.em
ld/testsuite/ld-aarch64/bti-pac-plt-1.d
ld/testsuite/ld-aarch64/bti-pac-plt-2.d
ld/testsuite/ld-aarch64/bti-plt-1.d
ld/testsuite/ld-aarch64/bti-plt-2.d
ld/testsuite/ld-aarch64/bti-plt-3.d
ld/testsuite/ld-aarch64/bti-plt-4.d
ld/testsuite/ld-aarch64/bti-plt-6.d
ld/testsuite/ld-aarch64/bti-plt-7.d
ld/testsuite/ld-aarch64/bti-warn.d
ld/testsuite/ld-aarch64/pac-plt-1.d
ld/testsuite/ld-aarch64/pac-plt-2.d

index a6157a4b426fe2687e3b0c3648913447a07155bc..69624fee8ead1f3b7264597b12c63d24edc4ec28 100644 (file)
@@ -1,3 +1,11 @@
+2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+
+       * bfd-in.h: Change comment.
+       * bfd-in2.h: Regenerate.
+       * elfnn-aarch64.c (elfNN_aarch64_merge_gnu_properties): Update warning.
+       * elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties):
+       Likwise.
+
 2019-05-28  Faraz Shahbazker  <fshahbazker@wavecomp.com>
 
        * elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS_PCHI16>:
index 890a79d409e1f404a82720d84a699d03e5267db5..a5e95d14aa7da99f61e65c8dbf63c97f95c421f5 100644 (file)
@@ -1014,7 +1014,7 @@ typedef enum
 typedef enum
 {
   BTI_NONE     = 0,  /* BTI is not enabled.  */
-  BTI_WARN     = 1,  /* BTI is enabled with --force-bti.  */
+  BTI_WARN     = 1,  /* BTI is enabled with -force-bti.  */
 } aarch64_enable_bti_type;
 
 /* A structure to encompass all information coming from BTI or PAC
index 450c7b7fb18ba45354ca80ffae08b067474bfd49..05e3219ebc88ce32644afe9cb22d66f46620e4de 100644 (file)
@@ -1021,7 +1021,7 @@ typedef enum
 typedef enum
 {
   BTI_NONE     = 0,  /* BTI is not enabled.  */
-  BTI_WARN     = 1,  /* BTI is enabled with --force-bti.  */
+  BTI_WARN     = 1,  /* BTI is enabled with -force-bti.  */
 } aarch64_enable_bti_type;
 
 /* A structure to encompass all information coming from BTI or PAC
index 761e6b92b518e16da19504861d6164edec81f8b0..282418dc66fdeb0185dc8a3fe9e50d0a4d6cd141 100644 (file)
@@ -10010,14 +10010,14 @@ elfNN_aarch64_merge_gnu_properties (struct bfd_link_info *info,
       if ((aprop && !(aprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
           || !aprop)
        {
-         _bfd_error_handler (_("%pB: warning: BTI turned on by --force-bti when "
+         _bfd_error_handler (_("%pB: warning: BTI turned on by -force-bti when "
                                "all inputs do not have BTI in NOTE section."),
                              abfd);
        }
       if ((bprop && !(bprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
           || !bprop)
        {
-         _bfd_error_handler (_("%pB: warning: BTI turned on by --force-bti when "
+         _bfd_error_handler (_("%pB: warning: BTI turned on by -force-bti when "
                                "all inputs do not have BTI in NOTE section."),
                              bbfd);
        }
index d16f2ecc1ff53f6667993162bcd2d69889ec2585..12490080351966a4c0cbb5ea98a98ca6c6e0bf25 100644 (file)
@@ -721,7 +721,7 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
                                    4);
       if (gnu_prop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI
          && !(prop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
-           _bfd_error_handler (_("%pB: warning: BTI turned on by --force-bti "
+           _bfd_error_handler (_("%pB: warning: BTI turned on by -force-bti "
                                  "when all inputs do not have BTI in NOTE "
                                  "section."), ebfd);
       prop->u.number |= gnu_prop;
index 70e724152ba79e5ae3829557039061070e922ffb..4d747af1a960f3f73a08227aac2b6046538162fc 100644 (file)
@@ -1,3 +1,24 @@
+2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+
+       * NEWS: Update options names.
+       * emultempl/aarch64elf.em (OPTION_FORCE_BTI, OPTION_PAC_PLT): Remove.
+       (PARSE_AND_LIST_LONGOPTS): Remove force-bti and pac-plt.
+       (PARSE_AND_LIST_OPTIONS): Update to -z.
+       (PARSE_AND_LIST_ARGS_CASE_Z_AARCH64): New.
+       (PARSE_AND_LIST_ARGS_CASE_Z): Add PARSE_AND_LIST_ARGS_CASE_Z_AARCH64.
+       (PARSE_AND_LIST_ARGS_CASES): Move cases for these options.
+       * testsuite/ld-aarch64/bti-pac-plt-1.d: Update option.
+       * testsuite/ld-aarch64/bti-pac-plt-2.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-1.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-2.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-3.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-4.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-6.d: Likewise.
+       * testsuite/ld-aarch64/bti-plt-7.d: Likewise.
+       * testsuite/ld-aarch64/bti-warn.d: Likewise.
+       * testsuite/ld-aarch64/pac-plt-1.d: Likewise.
+       * testsuite/ld-aarch64/pac-plt-2.d: Likewise.
+
 2019-05-30  Nick Clifton  <nickc@redhat.com>
 
        PR 24627
diff --git a/ld/NEWS b/ld/NEWS
index 3a41e9fbf1654ef04587ce90a047c332af852600..f66b35a95c16e7062c52203aeddd3c6e73883d8c 100644 (file)
--- a/ld/NEWS
+++ b/ld/NEWS
@@ -18,11 +18,11 @@ Changes in 2.33:
 * Add support for GNU_PROPERTY_AARCH64_FEATURE_1_PAC in ELF GNU program
   properties in the AArch64 ELF linker.
 
-* Add --force-bti for AArch64 to enable GNU_PROPERTY_AARCH64_FEATURE_1_BTI
+* Add -force-bti for AArch64 to enable GNU_PROPERTY_AARCH64_FEATURE_1_BTI
   on output while warning about missing GNU_PROPERTY_AARCH64_FEATURE_1_BTI
   on inputs and use PLTs protected with BTI.
 
-* Add --pac-plt for AArch64 to pick PAC enabled PLTs.
+* Add -pac-plt for AArch64 to pick PAC enabled PLTs.
 
 Changes in 2.32:
 
index b59623ec6533952734f400cc0165e59f94ac2b13..4c13f26f4e11a2830e57db9673d29a842a83a2ad 100644 (file)
@@ -372,8 +372,6 @@ PARSE_AND_LIST_PROLOGUE='
 #define OPTION_FIX_ERRATUM_835769      313
 #define OPTION_FIX_ERRATUM_843419      314
 #define OPTION_NO_APPLY_DYNAMIC_RELOCS 315
-#define OPTION_FORCE_BTI               316
-#define OPTION_PAC_PLT                 317
 '
 
 PARSE_AND_LIST_SHORTOPTS=p
@@ -387,8 +385,6 @@ PARSE_AND_LIST_LONGOPTS='
   { "fix-cortex-a53-835769", no_argument, NULL, OPTION_FIX_ERRATUM_835769},
   { "fix-cortex-a53-843419", optional_argument, NULL, OPTION_FIX_ERRATUM_843419},
   { "no-apply-dynamic-relocs", no_argument, NULL, OPTION_NO_APPLY_DYNAMIC_RELOCS},
-  { "force-bti", no_argument, NULL, OPTION_FORCE_BTI},
-  { "pac-plt", no_argument, NULL, OPTION_PAC_PLT},
 '
 
 PARSE_AND_LIST_OPTIONS='
@@ -419,10 +415,21 @@ PARSE_AND_LIST_OPTIONS='
                                                  instruction into an ADR.  As such the workaround will always use a\n\
                                                  veneer and this will give you both a performance and size overhead.\n"));
   fprintf (file, _("  --no-apply-dynamic-relocs    Do not apply link-time values for dynamic relocations\n"));
-  fprintf (file, _("  --force-bti                  Turn on Branch Target Identification mechanism and generate PLTs with BTI. Generate warnings for missing BTI on inputs\n"));
-  fprintf (file, _("  --pac-plt                    Protect PLTs with Pointer Authentication.\n"));
+  fprintf (file, _("  -force-bti                  Turn on Branch Target Identification mechanism and generate PLTs with BTI. Generate warnings for missing BTI on inputs\n"));
+  fprintf (file, _("  -pac-plt                    Protect PLTs with Pointer Authentication.\n"));
 '
 
+PARSE_AND_LIST_ARGS_CASE_Z_AARCH64='
+      else if (strcmp (optarg, "force-bti") == 0)
+       {
+         plt_type |= PLT_BTI;
+         bti_type = BTI_WARN;
+       }
+      else if (strcmp (optarg, "pac-plt") == 0)
+       plt_type |= PLT_PAC;
+'
+PARSE_AND_LIST_ARGS_CASE_Z="$PARSE_AND_LIST_ARGS_CASE_Z $PARSE_AND_LIST_ARGS_CASE_Z_AARCH64"
+
 PARSE_AND_LIST_ARGS_CASES='
     case '\'p\'':
       /* Only here for backwards compatibility.  */
@@ -464,15 +471,6 @@ PARSE_AND_LIST_ARGS_CASES='
       no_apply_dynamic_relocs = 1;
       break;
 
-    case OPTION_FORCE_BTI:
-      plt_type |= PLT_BTI;
-      bti_type = BTI_WARN;
-      break;
-
-    case OPTION_PAC_PLT:
-      plt_type |= PLT_PAC;
-      break;
-
     case OPTION_STUBGROUP_SIZE:
       {
        const char *end;
index 1ac280665e7c918bcf22853a21bd0a2ecae25d02..e1c6eb7f25d6b9e536f511cd5635d41b3247e48e 100644 (file)
@@ -1,6 +1,6 @@
 #source: bti-plt-1.s
 #as: -mabi=lp64
-#ld: -shared --force-bti --pac-plt -T bti-plt.ld
+#ld: -shared -z force-bti -z pac-plt -T bti-plt.ld
 #objdump: -dr -j .plt
 
 [^:]*: *file format elf64-.*aarch64
index e0ac1df1a57e4389866655c25532d97583bbf28d..0c67615ac41c8370acc331957a422eedda35157e 100644 (file)
@@ -1,6 +1,6 @@
 #source: bti-plt-1.s
 #as: -mabi=lp64
-#ld: --force-bti --pac-plt -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#ld: -z force-bti -z pac-plt -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
 #objdump: -dr -j .plt
 
 [^:]*: *file format elf64-.*aarch64
index 618a6a9c15395bf786fd8c60f4569f97d78fcc13..f8414a0164546528bcc5f1adb748e963858f10af 100644 (file)
@@ -1,7 +1,7 @@
-#name: Check --force-bti emits BTI PLT (shared)
+#name: Check -force-bti emits BTI PLT (shared)
 #source: bti-plt-1.s
 #as: -mabi=lp64
-#ld: -shared --force-bti -T bti-plt.ld
+#ld: -shared -force-bti -T bti-plt.ld
 #objdump: -dr -j .plt
 
 [^:]*: *file format elf64-.*aarch64
index c26e47a34f1109e061da1e0c760830db6dd5028a..bddefe9fc929a1fe0b51cf4a394a95551b9e67bc 100644 (file)
@@ -1,8 +1,8 @@
-#name: Check --force-bti emits BTI feature (shared)
+#name: Check -force-bti emits BTI feature (shared)
 #source: bti-plt-1.s
 #source: bti-plt-2.s
 #as: -mabi=lp64
-#ld: -shared --force-bti -T bti-plt.ld
+#ld: -shared -force-bti -T bti-plt.ld
 #readelf: -n
 
 Displaying notes found in: .note.gnu.property
index 08914deb87526dd4e1699fb062a4486638d4c058..82f08a9869edb2dcd946f30da64aec9ccaed482d 100644 (file)
@@ -1,7 +1,7 @@
-#name: Check --force-bti emits BTI PLT (exec)
+#name: Check -force-bti emits BTI PLT (exec)
 #source: bti-plt-1.s
 #as: -mabi=lp64
-#ld: --force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#ld: -force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
 #objdump: -dr -j .plt
 
 [^:]*: *file format elf64-.*aarch64
index 90aeed2d7bb9629216dad794fd08910b2f5ba7e7..936c24dbf72ac022c0368a474d82e44c6e484786 100644 (file)
@@ -1,7 +1,7 @@
-#name: Check --force-bti emits BTI feature (exec)
+#name: Check -force-bti emits BTI feature (exec)
 #source: bti-plt-1.s
 #as: -mabi=lp64
-#ld: --force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
+#ld: -force-bti -e _start -T bti-plt.ld -L./tmpdir -lbti-plt-so
 #readelf: -n
 
 Displaying notes found in: .note.gnu.property
index 30d225d4dec80ab454da15787023a1096c73606b..27958c5d9525d4f3c12abbc1399c89a3045186b7 100644 (file)
@@ -2,8 +2,8 @@
 #source: property-bti-pac2.s
 #source: property-bti-pac1.s
 #as: -mabi=lp64 -defsym __property_pac__=1
-#ld: -shared --force-bti
-#warning: .*property-bti-pac2.*: warning: BTI turned on by --force-bti.*$
+#ld: -shared -force-bti
+#warning: .*property-bti-pac2.*: warning: BTI turned on by -force-bti.*$
 #readelf: -n
 
 # Should warn about the missing input BTI NOTE but should
index e8fa0d3a09163bae08d87620c718b5c765462b32..644290adacb22780844ee3794d97897508bf493c 100644 (file)
@@ -2,9 +2,9 @@
 #source: property-bti-pac2.s
 #source: plt_mapping_symbol.s
 #as: -mabi=lp64
-#ld: -shared --force-bti
-#warning: .*plt_mapping_symbol.*: warning: BTI turned on by --force-bti.*
-#warning: .*property-bti-pac2.*: warning: BTI turned on by --force-bti.*
+#ld: -shared -force-bti
+#warning: .*plt_mapping_symbol.*: warning: BTI turned on by -force-bti.*
+#warning: .*property-bti-pac2.*: warning: BTI turned on by -force-bti.*
 #readelf: -n
 
 # Should warn about the missing input BTI NOTE but should
index c2edccf15f11ee06c09143b763837dbb950ba946..f22fd60cbd571042332cab6f3574965e8ef60249 100644 (file)
@@ -2,9 +2,9 @@
 #source: property-bti-pac2.s
 #source: bti-plt-1.s
 #as: -mabi=lp64 --defsym __guard_property_bti__=1 --defsym __property_pac__=1
-#ld: -shared --force-bti
-#warning: .*property-bti-pac2.*: warning: BTI turned on by --force-bti.*
-#warning: .*bti-plt-1.*: warning: BTI turned on by --force-bti.*
+#ld: -shared -force-bti
+#warning: .*property-bti-pac2.*: warning: BTI turned on by -force-bti.*
+#warning: .*bti-plt-1.*: warning: BTI turned on by -force-bti.*
 #readelf: -n
 
 # Should warn about the missing input BTI NOTE but should
index 9c4a676cf8f68bec3815909b25e188e7194c82ed..06278ef15f706cbee55f1258c8ee732370506faa 100644 (file)
@@ -1,6 +1,6 @@
 #source: bti-plt-1.s
 #as: -mabi=lp64 --defsym __guard_property_bti__=1
-#ld: -shared --pac-plt -T bti-plt.ld
+#ld: -shared -pac-plt -T bti-plt.ld
 #objdump: -dr -j .plt
 
 [^:]*: *file format elf64-.*aarch64
index 7ebc81d7f7ddb3c18b3cc4cc330c3e62c60a5e3f..b5cf43d3d4694564b5f653cb234b40294c968b0b 100644 (file)
@@ -1,5 +1,5 @@
 #source: tls-desc-ie.s
-#ld: -shared --pac-plt -T bti-plt.ld
+#ld: -shared -pac-plt -T bti-plt.ld
 #objdump: -dr -j .plt
 #...
 Disassembly of section .plt: