ld/x86-64: Properly Handle -z lam-u48/lam-u57
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 9 Jan 2021 14:11:06 +0000 (06:11 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 9 Jan 2021 14:13:11 +0000 (06:13 -0800)
Properly merge GNU properties for LAM_U48 and LAM_U57.

bfd/

PR ld/27166
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Handle
-z lam-u48 and -z lam-u57.

ld/

PR ld/27166
* testsuite/ld-x86-64/lam-u48.rd: New file.
* testsuite/ld-x86-64/lam-u57.rd: Likewise.
* testsuite/ld-x86-64/x86-64.exp: Add PR ld/27166 tests.

bfd/ChangeLog
bfd/elfxx-x86.c
ld/ChangeLog
ld/testsuite/ld-x86-64/lam-u48.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/lam-u57.rd [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp

index 560287fec95536b0f843f13eaeb90371a513eb45..d33445f87f3245d7ac782e724f0e50a3a6304577 100644 (file)
@@ -1,3 +1,9 @@
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/27166
+       * elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Handle
+       -z lam-u48 and -z lam-u57.
+
 2021-01-09  Nick Clifton  <nickc@redhat.com>
 
        * version.m4: Change to 2.36.50.
index c47f48257eabe7cd225eb0acb3bc679a98a9f0b1..3a0dffc4e6ec4c38e8f52fd83d9e1d9b7341b80f 100644 (file)
@@ -2449,8 +2449,15 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
                features = GNU_PROPERTY_X86_FEATURE_1_IBT;
              if (htab->params->shstk)
                features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
-             /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
-                GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
+             if (htab->params->lam_u48)
+               features |= (GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+                            | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+             else if (htab->params->lam_u57)
+               features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
+             /* Add GNU_PROPERTY_X86_FEATURE_1_IBT,
+                GNU_PROPERTY_X86_FEATURE_1_SHSTK,
+                GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
+                GNU_PROPERTY_X86_FEATURE_1_LAM_U57.  */
              aprop->u.number |= features;
            }
          updated = number != (unsigned int) aprop->u.number;
@@ -2470,6 +2477,11 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
                features = GNU_PROPERTY_X86_FEATURE_1_IBT;
              if (htab->params->shstk)
                features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+             if (htab->params->lam_u48)
+               features |= (GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+                            | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+             else if (htab->params->lam_u57)
+               features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
            }
          if (features)
            {
index 75bcad270d6b36873437b92d48570db25c35fb3c..0628a4527a9d05664a14733c25a4db6d869ba72c 100644 (file)
@@ -1,3 +1,10 @@
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR ld/27166
+       * testsuite/ld-x86-64/lam-u48.rd: New file.
+       * testsuite/ld-x86-64/lam-u57.rd: Likewise.
+       * testsuite/ld-x86-64/x86-64.exp: Add PR ld/27166 tests.
+
 2021-01-09  Nick Clifton  <nickc@redhat.com>
 
        * configure: Regenerate.
diff --git a/ld/testsuite/ld-x86-64/lam-u48.rd b/ld/testsuite/ld-x86-64/lam-u48.rd
new file mode 100644 (file)
index 0000000..ad31262
--- /dev/null
@@ -0,0 +1,6 @@
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+#...
+      Properties: x86 feature: .*LAM_U48, LAM_U57.*
+#pass
diff --git a/ld/testsuite/ld-x86-64/lam-u57.rd b/ld/testsuite/ld-x86-64/lam-u57.rd
new file mode 100644 (file)
index 0000000..8b77e63
--- /dev/null
@@ -0,0 +1,6 @@
+Displaying notes found in: .note.gnu.property
+[      ]+Owner[        ]+Data size[    ]+Description
+  GNU                  0x[0-9a-f]+     NT_GNU_PROPERTY_TYPE_0
+#...
+      Properties: x86 feature: .*LAM_U57.*
+#pass
index 37a2e50341d26fe4c26083d358cac5ea8fad3cd8..83fdaa7db6599ce67534ebb3891b9d814ddf346e 100644 (file)
@@ -1452,6 +1452,22 @@ if { [isnative] && [check_compiler_available] } {
                {{error_output "pr21997-1b.err"}} \
                "pr21997-1b" \
            ] \
+           [list \
+               "Build lam-u48.so" \
+               "-shared -Wl,-z,lam-u48" \
+               "" \
+               {dummy.s} \
+               {{readelf -n lam-u48.rd}}  \
+               "lam-u48.so" \
+           ] \
+           [list \
+               "Build lam-u57.so" \
+               "-shared -Wl,-z,lam-u57" \
+               "" \
+               {dummy.s} \
+               {{readelf -n lam-u57.rd}}  \
+               "lam-u57.so" \
+           ] \
        ]
     }