Hi Iain,

> Upstream dmd has now released v2.100.0, this patch merges in the
> latest bug fixes since the last sync-up of the release branch, as well
> as all new feature changes on development branch.
[...]
> D runtime changes:
>
>     - Import druntime v2.100.0.
>
> Bootstrapped and regression tested on x86_64-linux-gnu/-m32/-mx32, and
> committed to mainline.

this patch broke Solaris bootstrap:

/vol/gcc/src/hg/master/local/libphobos/libdruntime/core/sys/solaris/link.d-mixin-162:162:7:
 error: struct 'core.sys.elf.Elf32_Dyn' at 
/vol/gcc/src/hg/master/local/libphobos/libdruntime/core/sys/elf/package.d:620:1 
conflicts with struct 'core.sys.solaris.sys.link.Elf32_Dyn' at 
/vol/gcc/src/hg/master/local/libphobos/libdruntime/core/sys/solaris/sys/link.d:15:1
/vol/gcc/src/hg/master/local/libphobos/libdruntime/gcc/sections/elf.d:743:9: 
error: template instance 'core.sys.solaris.link.ElfW!"Dyn"' error instantiating
  743 |         ElfW!"Dyn"[] dyns;
      |         ^

and similarly for Elf64_Dyn.

There were also redefinition errors for DT_NEEDED, DT_STRTAB,
DT_AUXILIARY, and DT_FILTER.

The following patch avoids those by removing the Elf??_Dyn declarations
from core/sys/solaris/sys/link.d resp. adding the missing d_off field in
core/sys/elf/package.d, as well as the duplicate DT_* definitions.  I've
not yet fully checked if there are other duplicates or declarations in
current Solaris <sys/link.h> etc. that are missing from the D headers.

This was enough to restore bootstrap for now.

        Rainer

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


diff --git a/libphobos/libdruntime/core/sys/elf/package.d b/libphobos/libdruntime/core/sys/elf/package.d
--- a/libphobos/libdruntime/core/sys/elf/package.d
+++ b/libphobos/libdruntime/core/sys/elf/package.d
@@ -624,6 +624,7 @@ struct Elf32_Dyn
   {
       Elf32_Word d_val;
       Elf32_Addr d_ptr;
+      Elf32_Off  d_off;
   } _d_un d_un;
 }
 
diff --git a/libphobos/libdruntime/core/sys/solaris/sys/link.d b/libphobos/libdruntime/core/sys/solaris/sys/link.d
--- a/libphobos/libdruntime/core/sys/solaris/sys/link.d
+++ b/libphobos/libdruntime/core/sys/solaris/sys/link.d
@@ -10,35 +10,13 @@ extern (C):
 nothrow:
 
 public import core.sys.solaris.sys.elftypes;
+public import core.sys.elf;
 import core.stdc.config;
 
-struct Elf32_Dyn
-{
-    Elf32_Sword d_tag;
-    union _d_un
-    {
-        Elf32_Word d_val;
-        Elf32_Addr d_ptr;
-        Elf32_Off  d_off;
-    } _d_un d_un;
-}
-
-struct Elf64_Dyn
-{
-    Elf64_Xword d_tag;
-    union _d_un
-    {
-        Elf64_Xword d_val;
-        Elf64_Addr  d_ptr;
-    } _d_un d_un;
-}
-
 enum DT_NULL         = 0;
-enum DT_NEEDED       = 1;
 enum DT_PLTRELSZ     = 2;
 enum DT_PLTGOT       = 3;
 enum DT_HASH         = 4;
-enum DT_STRTAB       = 5;
 enum DT_SYMTAB       = 6;
 enum DT_RELA         = 7;
 enum DT_RELASZ       = 8;
@@ -138,9 +116,7 @@ enum DT_VERNEED    = 0x6ffffffe;
 enum DT_VERNEEDNUM = 0x6fffffff;
 
 enum DT_LOPROC    = 0x70000000;
-enum DT_AUXILIARY = 0x7ffffffd;
 enum DT_USED      = 0x7ffffffe;
-enum DT_FILTER    = 0x7fffffff;
 enum DT_HIPROC    = 0x7fffffff;
 
 enum DF_ORIGIN     = 0x00000001;

Reply via email to