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;