Support PT_OPENBSD_RANDOMIZE and PT_OPENBSD_WXNEEDED.

Index: elf/passes.cc
--- elf/passes.cc.orig
+++ elf/passes.cc
@@ -110,6 +110,8 @@ void create_synthetic_sections(Context<E> &ctx) {
 
     if (ctx.arg.z_sectionheader)
       ctx.shdr = push(new OutputShdr<E>);
+
+    ctx.openbsd_randomize = push(new OutputPhdr<E>(PT_OPENBSD_RANDOMIZE));
   }
 
   ctx.got = push(new GotSection<E>);
@@ -169,6 +171,12 @@ void create_synthetic_sections(Context<E> &ctx) {
   ctx.verneed = push(new VerneedSection<E>);
   ctx.note_package = push(new NotePackageSection<E>);
   ctx.note_property = push(new NotePropertySection<E>);
+
+  if (ctx.arg.z_wxneeded)
+    ctx.openbsd_wxneeded = push(new OutputPhdr<E>(PT_OPENBSD_WXNEEDED));
+
+  if (ctx.arg.z_nobtcfi)
+    ctx.openbsd_nobtcfi = push(new OutputPhdr<E>(PT_OPENBSD_NOBTCFI));
 
   if constexpr (is_riscv<E>)
     ctx.extra.riscv_attributes = push(new RiscvAttributesSection<E>);
