aboutsummaryrefslogtreecommitdiff
path: root/libphobos
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2022-05-16 18:30:46 +0200
committerIain Buclaw <ibuclaw@gdcproject.org>2022-05-16 19:07:45 +0200
commit5eb9927aae076200bb7ba3f22c33b0a7c97c5643 (patch)
treef80210439a5d8995ebf189bce7f2e141fcb1caec /libphobos
parent682e587f1021241758f7dfe0b22651008622a312 (diff)
downloadgcc-5eb9927aae076200bb7ba3f22c33b0a7c97c5643.zip
gcc-5eb9927aae076200bb7ba3f22c33b0a7c97c5643.tar.gz
gcc-5eb9927aae076200bb7ba3f22c33b0a7c97c5643.tar.bz2
d: Merge upstream dmd 60bfa0ee7, druntime 94bd5bcb, phobos 3a1cd9a01.
D front-end changes: - Import dmd v2.100.0. - Add bit fields to D, enabled via the -fpreview=bitfields switch. - Removed the -ftransition=markdown and -frevert=markdown switches. - Added new trait `__traits(classInstanceAlignment)' to provide the required data alignment for classes. - The check for `pragma(crt_constructor)' and `pragma(crt_destructor)' linkage has been relaxed to allow all `void()' signatures. - ImportC parser now recognizes the `typeof(...)' operator. D runtime changes: - Import druntime v2.100.0. Phobos changes: - Import phobos v2.100.0. - To comply with dip1000, `std.socket.Socket` methods now accept only `scope' arrays. - The `fill', `alignSize', `align2', and `align4' methods of `std.outbuffer.OutBuffer' have been extended to allow specifying a custom value when pre-filling or padding the buffer. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 60bfa0ee7. * dmd/VERSION: Update version to v2.100.0. * d-builtins.cc (d_init_versions): Update for new front-end interface. * d-codegen.cc (d_decl_context): Use resolvedLinkage to get declaration linkage. (build_struct_literal): Track offset in bits. * d-gimplify.cc (d_gimplify_modify_expr): Check both operands for a bit-field reference. * d-lang.cc (d_handle_option): Handle -fpreview=bitfields, remove -frevert=markdown and -ftransition=vmarkdown. (d_post_options): Set flag_rtti and flag_exceptions if -fno-druntime was seen on command-line. (d_parse_file): Update for new front-end interface. (d_type_promotes_to): Use resolvedLinkage to get declaration linkage. * decl.cc (make_thunk): Likewise. * expr.cc (ExprVisitor::visit (CatAssignExp *)): Remove lowering for appending of an element or array to another array. * lang.opt (fpreview=bitfields): New option. (frevert=markdown): Remove. (ftransition=vmarkdown): Remove. * types.cc (layout_aggregate_members): Ignore anonymous fields in total count. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 94bd5bcb. * libdruntime/Makefile.am (ALL_DRUNTIME_INSTALL_DSOURCES): Add $(DRUNTIME_DSOURCES_ELF). (ALL_DRUNTIME_SOURCES): Likewise. (DRUNTIME_DSOURCES_ELF): New variable. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 3a1cd9a01. * testsuite/libphobos.init_fini/custom_gc.d: Update test.
Diffstat (limited to 'libphobos')
-rw-r--r--libphobos/libdruntime/MERGE2
-rw-r--r--libphobos/libdruntime/Makefile.am6
-rw-r--r--libphobos/libdruntime/Makefile.in132
-rw-r--r--libphobos/libdruntime/__builtins.di31
-rw-r--r--libphobos/libdruntime/core/internal/array/appending.d106
-rw-r--r--libphobos/libdruntime/core/internal/array/utils.d60
-rw-r--r--libphobos/libdruntime/core/internal/traits.d2
-rw-r--r--libphobos/libdruntime/core/lifetime.d13
-rw-r--r--libphobos/libdruntime/core/memory.d2
-rw-r--r--libphobos/libdruntime/core/simd.d24
-rw-r--r--libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d155
-rw-r--r--libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d154
-rw-r--r--libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d601
-rw-r--r--libphobos/libdruntime/core/sys/elf/package.d2532
-rw-r--r--libphobos/libdruntime/core/sys/freebsd/sys/elf32.d151
-rw-r--r--libphobos/libdruntime/core/sys/freebsd/sys/elf64.d159
-rw-r--r--libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d803
-rw-r--r--libphobos/libdruntime/core/sys/linux/elf.d2419
-rw-r--r--libphobos/libdruntime/core/sys/netbsd/sys/elf32.d151
-rw-r--r--libphobos/libdruntime/core/sys/netbsd/sys/elf64.d150
-rw-r--r--libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d758
-rw-r--r--libphobos/libdruntime/core/sys/openbsd/sys/elf32.d158
-rw-r--r--libphobos/libdruntime/core/sys/openbsd/sys/elf64.d157
-rw-r--r--libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d604
-rw-r--r--libphobos/libdruntime/core/sys/posix/sys/socket.d33
-rw-r--r--libphobos/libdruntime/core/sys/solaris/sys/elf.d488
-rw-r--r--libphobos/libdruntime/core/sys/windows/objbase.d1
-rw-r--r--libphobos/libdruntime/core/sys/windows/unknwn.d1
-rw-r--r--libphobos/libdruntime/core/thread/osthread.d5
-rw-r--r--libphobos/libdruntime/core/thread/threadbase.d9
-rw-r--r--libphobos/libdruntime/object.d3
-rw-r--r--libphobos/libdruntime/rt/lifetime.d4
-rw-r--r--libphobos/src/MERGE2
-rw-r--r--libphobos/src/std/exception.d2
-rw-r--r--libphobos/src/std/experimental/logger/core.d8
-rw-r--r--libphobos/src/std/math/exponential.d4
-rw-r--r--libphobos/src/std/math/hardware.d4
-rw-r--r--libphobos/src/std/outbuffer.d71
-rw-r--r--libphobos/src/std/socket.d70
-rw-r--r--libphobos/src/std/sumtype.d23
-rw-r--r--libphobos/src/std/traits.d5
-rw-r--r--libphobos/src/std/typecons.d4
-rw-r--r--libphobos/testsuite/libphobos.init_fini/custom_gc.d3
43 files changed, 2959 insertions, 7111 deletions
diff --git a/libphobos/libdruntime/MERGE b/libphobos/libdruntime/MERGE
index c94634f..1a9faf9 100644
--- a/libphobos/libdruntime/MERGE
+++ b/libphobos/libdruntime/MERGE
@@ -1,4 +1,4 @@
-e361d200b287a68344095f306cf5ea3a63c080e1
+94bd5bcb448405d90bc50113d1cfd45a0880a50d
The first line of this file holds the git revision number of the last
merge done from the dlang/druntime repository.
diff --git a/libphobos/libdruntime/Makefile.am b/libphobos/libdruntime/Makefile.am
index 6ca4012..260bb63 100644
--- a/libphobos/libdruntime/Makefile.am
+++ b/libphobos/libdruntime/Makefile.am
@@ -39,7 +39,7 @@ ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
$(DRUNTIME_DSOURCES_OPENBSD) $(DRUNTIME_DSOURCES_POSIX) \
$(DRUNTIME_DSOURCES_SOLARIS) $(DRUNTIME_DSOURCES_WINDOWS) \
$(DRUNTIME_DSOURCES_GENERATED) $(DRUNTIME_DISOURCES) \
- $(DRUNTIME_DSOURCES_STDCXX)
+ $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX)
# Setup source files depending on configure
DRUNTIME_SOURCES_CONFIGURED =
@@ -120,7 +120,7 @@ endif
DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d
ALL_DRUNTIME_SOURCES = $(DRUNTIME_DSOURCES) $(DRUNTIME_CSOURCES) \
- $(DRUNTIME_DSOURCES_STDCXX) \
+ $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX) \
$(DRUNTIME_SOURCES_CONFIGURED) $(DRUNTIME_DSOURCES_GENERATED)
# Need this library to both be part of libgphobos.a, and installed separately.
@@ -253,6 +253,8 @@ DRUNTIME_DSOURCES_DRAGONFLYBSD = core/sys/dragonflybsd/dlfcn.d \
core/sys/dragonflybsd/sys/mman.d core/sys/dragonflybsd/sys/socket.d \
core/sys/dragonflybsd/sys/sysctl.d core/sys/dragonflybsd/time.d
+DRUNTIME_DSOURCES_ELF = core/sys/elf/package.d
+
DRUNTIME_DSOURCES_FREEBSD = core/sys/freebsd/config.d \
core/sys/freebsd/dlfcn.d core/sys/freebsd/err.d \
core/sys/freebsd/execinfo.d core/sys/freebsd/netinet/in_.d \
diff --git a/libphobos/libdruntime/Makefile.in b/libphobos/libdruntime/Makefile.in
index f7f78d7..b7e2f34 100644
--- a/libphobos/libdruntime/Makefile.in
+++ b/libphobos/libdruntime/Makefile.in
@@ -245,13 +245,14 @@ am__objects_1 = core/atomic.lo core/attribute.lo core/bitop.lo \
rt/monitor_.lo rt/profilegc.lo rt/sections.lo rt/tlsgc.lo \
rt/util/typeinfo.lo rt/util/utility.lo
am__objects_2 = core/stdc/libgdruntime_la-errno_.lo
-am__objects_3 = core/stdcpp/allocator.lo core/stdcpp/array.lo \
+am__objects_3 = core/sys/elf/package.lo
+am__objects_4 = core/stdcpp/allocator.lo core/stdcpp/array.lo \
core/stdcpp/exception.lo core/stdcpp/memory.lo \
core/stdcpp/new_.lo core/stdcpp/string.lo \
core/stdcpp/string_view.lo core/stdcpp/type_traits.lo \
core/stdcpp/typeinfo.lo core/stdcpp/utility.lo \
core/stdcpp/vector.lo core/stdcpp/xutility.lo
-am__objects_4 = core/sys/posix/aio.lo core/sys/posix/arpa/inet.lo \
+am__objects_5 = core/sys/posix/aio.lo core/sys/posix/arpa/inet.lo \
core/sys/posix/config.lo core/sys/posix/dirent.lo \
core/sys/posix/dlfcn.lo core/sys/posix/fcntl.lo \
core/sys/posix/grp.lo core/sys/posix/iconv.lo \
@@ -278,8 +279,8 @@ am__objects_4 = core/sys/posix/aio.lo core/sys/posix/arpa/inet.lo \
core/sys/posix/syslog.lo core/sys/posix/termios.lo \
core/sys/posix/time.lo core/sys/posix/ucontext.lo \
core/sys/posix/unistd.lo core/sys/posix/utime.lo
-@DRUNTIME_OS_POSIX_TRUE@am__objects_5 = $(am__objects_4)
-am__objects_6 = core/sys/darwin/config.lo \
+@DRUNTIME_OS_POSIX_TRUE@am__objects_6 = $(am__objects_5)
+am__objects_7 = core/sys/darwin/config.lo \
core/sys/darwin/crt_externs.lo core/sys/darwin/dlfcn.lo \
core/sys/darwin/err.lo core/sys/darwin/execinfo.lo \
core/sys/darwin/fcntl.lo core/sys/darwin/ifaddrs.lo \
@@ -294,8 +295,8 @@ am__objects_6 = core/sys/darwin/config.lo \
core/sys/darwin/sys/attr.lo core/sys/darwin/sys/cdefs.lo \
core/sys/darwin/sys/event.lo core/sys/darwin/sys/mman.lo \
core/sys/darwin/sys/sysctl.lo
-@DRUNTIME_OS_DARWIN_TRUE@am__objects_7 = $(am__objects_6)
-am__objects_8 = core/sys/dragonflybsd/dlfcn.lo \
+@DRUNTIME_OS_DARWIN_TRUE@am__objects_8 = $(am__objects_7)
+am__objects_9 = core/sys/dragonflybsd/dlfcn.lo \
core/sys/dragonflybsd/err.lo core/sys/dragonflybsd/execinfo.lo \
core/sys/dragonflybsd/netinet/in_.lo \
core/sys/dragonflybsd/pthread_np.lo \
@@ -314,12 +315,12 @@ am__objects_8 = core/sys/dragonflybsd/dlfcn.lo \
core/sys/dragonflybsd/sys/socket.lo \
core/sys/dragonflybsd/sys/sysctl.lo \
core/sys/dragonflybsd/time.lo
-@DRUNTIME_OS_DRAGONFLYBSD_TRUE@am__objects_9 = $(am__objects_8)
-am__objects_10 = core/sys/bionic/err.lo core/sys/bionic/fcntl.lo \
+@DRUNTIME_OS_DRAGONFLYBSD_TRUE@am__objects_10 = $(am__objects_9)
+am__objects_11 = core/sys/bionic/err.lo core/sys/bionic/fcntl.lo \
core/sys/bionic/stdlib.lo core/sys/bionic/string.lo \
core/sys/bionic/unistd.lo
-@DRUNTIME_OS_ANDROID_TRUE@am__objects_11 = $(am__objects_10)
-am__objects_12 = core/sys/freebsd/config.lo core/sys/freebsd/dlfcn.lo \
+@DRUNTIME_OS_ANDROID_TRUE@am__objects_12 = $(am__objects_11)
+am__objects_13 = core/sys/freebsd/config.lo core/sys/freebsd/dlfcn.lo \
core/sys/freebsd/err.lo core/sys/freebsd/execinfo.lo \
core/sys/freebsd/netinet/in_.lo core/sys/freebsd/pthread_np.lo \
core/sys/freebsd/stdlib.lo core/sys/freebsd/string.lo \
@@ -332,8 +333,8 @@ am__objects_12 = core/sys/freebsd/config.lo core/sys/freebsd/dlfcn.lo \
core/sys/freebsd/sys/mman.lo core/sys/freebsd/sys/mount.lo \
core/sys/freebsd/sys/sysctl.lo core/sys/freebsd/time.lo \
core/sys/freebsd/unistd.lo
-@DRUNTIME_OS_FREEBSD_TRUE@am__objects_13 = $(am__objects_12)
-am__objects_14 = core/sys/netbsd/dlfcn.lo core/sys/netbsd/err.lo \
+@DRUNTIME_OS_FREEBSD_TRUE@am__objects_14 = $(am__objects_13)
+am__objects_15 = core/sys/netbsd/dlfcn.lo core/sys/netbsd/err.lo \
core/sys/netbsd/execinfo.lo core/sys/netbsd/stdlib.lo \
core/sys/netbsd/string.lo core/sys/netbsd/sys/elf.lo \
core/sys/netbsd/sys/elf32.lo core/sys/netbsd/sys/elf64.lo \
@@ -341,8 +342,8 @@ am__objects_14 = core/sys/netbsd/dlfcn.lo core/sys/netbsd/err.lo \
core/sys/netbsd/sys/featuretest.lo \
core/sys/netbsd/sys/link_elf.lo core/sys/netbsd/sys/mman.lo \
core/sys/netbsd/sys/sysctl.lo core/sys/netbsd/time.lo
-@DRUNTIME_OS_NETBSD_TRUE@am__objects_15 = $(am__objects_14)
-am__objects_16 = core/sys/openbsd/dlfcn.lo core/sys/openbsd/err.lo \
+@DRUNTIME_OS_NETBSD_TRUE@am__objects_16 = $(am__objects_15)
+am__objects_17 = core/sys/openbsd/dlfcn.lo core/sys/openbsd/err.lo \
core/sys/openbsd/execinfo.lo core/sys/openbsd/pthread_np.lo \
core/sys/openbsd/pwd.lo core/sys/openbsd/stdlib.lo \
core/sys/openbsd/string.lo core/sys/openbsd/sys/cdefs.lo \
@@ -352,8 +353,8 @@ am__objects_16 = core/sys/openbsd/dlfcn.lo core/sys/openbsd/err.lo \
core/sys/openbsd/sys/link_elf.lo core/sys/openbsd/sys/mman.lo \
core/sys/openbsd/sys/sysctl.lo core/sys/openbsd/time.lo \
core/sys/openbsd/unistd.lo
-@DRUNTIME_OS_OPENBSD_TRUE@am__objects_17 = $(am__objects_16)
-am__objects_18 = core/sys/linux/config.lo core/sys/linux/dlfcn.lo \
+@DRUNTIME_OS_OPENBSD_TRUE@am__objects_18 = $(am__objects_17)
+am__objects_19 = core/sys/linux/config.lo core/sys/linux/dlfcn.lo \
core/sys/linux/elf.lo core/sys/linux/epoll.lo \
core/sys/linux/err.lo core/sys/linux/errno.lo \
core/sys/linux/execinfo.lo core/sys/linux/fcntl.lo \
@@ -371,8 +372,8 @@ am__objects_18 = core/sys/linux/config.lo core/sys/linux/dlfcn.lo \
core/sys/linux/termios.lo core/sys/linux/time.lo \
core/sys/linux/timerfd.lo core/sys/linux/tipc.lo \
core/sys/linux/unistd.lo
-@DRUNTIME_OS_LINUX_TRUE@am__objects_19 = $(am__objects_18)
-am__objects_20 = core/sys/windows/accctrl.lo \
+@DRUNTIME_OS_LINUX_TRUE@am__objects_20 = $(am__objects_19)
+am__objects_21 = core/sys/windows/accctrl.lo \
core/sys/windows/aclapi.lo core/sys/windows/aclui.lo \
core/sys/windows/basetsd.lo core/sys/windows/basetyps.lo \
core/sys/windows/cderr.lo core/sys/windows/cguid.lo \
@@ -457,9 +458,9 @@ am__objects_20 = core/sys/windows/accctrl.lo \
core/sys/windows/winsvc.lo core/sys/windows/winuser.lo \
core/sys/windows/winver.lo core/sys/windows/wtsapi32.lo \
core/sys/windows/wtypes.lo
-@DRUNTIME_OS_MINGW_TRUE@am__objects_21 = $(am__objects_20) \
+@DRUNTIME_OS_MINGW_TRUE@am__objects_22 = $(am__objects_21) \
@DRUNTIME_OS_MINGW_TRUE@ config/mingw/libgdruntime_la-msvc.lo
-am__objects_22 = core/sys/solaris/dlfcn.lo core/sys/solaris/elf.lo \
+am__objects_23 = core/sys/solaris/dlfcn.lo core/sys/solaris/elf.lo \
core/sys/solaris/err.lo core/sys/solaris/execinfo.lo \
core/sys/solaris/libelf.lo core/sys/solaris/link.lo \
core/sys/solaris/stdlib.lo core/sys/solaris/sys/elf.lo \
@@ -471,48 +472,48 @@ am__objects_22 = core/sys/solaris/dlfcn.lo core/sys/solaris/elf.lo \
core/sys/solaris/sys/priocntl.lo \
core/sys/solaris/sys/procset.lo core/sys/solaris/sys/types.lo \
core/sys/solaris/time.lo
-@DRUNTIME_OS_SOLARIS_TRUE@am__objects_23 = $(am__objects_22)
-@DRUNTIME_CPU_AARCH64_TRUE@am__objects_24 = config/aarch64/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_ARM_TRUE@am__objects_25 = config/arm/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_MIPS_TRUE@am__objects_26 = config/mips/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_POWERPC_TRUE@am__objects_27 = config/powerpc/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_28 = config/mingw/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_29 = config/x86/libgdruntime_la-switchcontext.lo
-@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_30 = config/systemz/libgdruntime_la-get_tls_offset.lo
-@DRUNTIME_CPU_S390_TRUE@am__objects_31 = config/s390/libgdruntime_la-get_tls_offset.lo
-am__objects_32 = $(am__objects_5) $(am__objects_7) $(am__objects_9) \
- $(am__objects_11) $(am__objects_13) $(am__objects_15) \
- $(am__objects_17) $(am__objects_19) $(am__objects_21) \
- $(am__objects_23) $(am__objects_24) $(am__objects_25) \
- $(am__objects_26) $(am__objects_27) $(am__objects_28) \
- $(am__objects_29) $(am__objects_30) $(am__objects_31)
-am__objects_33 = gcc/config.lo gcc/libbacktrace.lo
-am__objects_34 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
- $(am__objects_32) $(am__objects_33)
-am_libgdruntime_la_OBJECTS = $(am__objects_34)
+@DRUNTIME_OS_SOLARIS_TRUE@am__objects_24 = $(am__objects_23)
+@DRUNTIME_CPU_AARCH64_TRUE@am__objects_25 = config/aarch64/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_ARM_TRUE@am__objects_26 = config/arm/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_MIPS_TRUE@am__objects_27 = config/mips/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_POWERPC_TRUE@am__objects_28 = config/powerpc/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_29 = config/mingw/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_30 = config/x86/libgdruntime_la-switchcontext.lo
+@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_31 = config/systemz/libgdruntime_la-get_tls_offset.lo
+@DRUNTIME_CPU_S390_TRUE@am__objects_32 = config/s390/libgdruntime_la-get_tls_offset.lo
+am__objects_33 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
+ $(am__objects_12) $(am__objects_14) $(am__objects_16) \
+ $(am__objects_18) $(am__objects_20) $(am__objects_22) \
+ $(am__objects_24) $(am__objects_25) $(am__objects_26) \
+ $(am__objects_27) $(am__objects_28) $(am__objects_29) \
+ $(am__objects_30) $(am__objects_31) $(am__objects_32)
+am__objects_34 = gcc/config.lo gcc/libbacktrace.lo
+am__objects_35 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ $(am__objects_4) $(am__objects_33) $(am__objects_34)
+am_libgdruntime_la_OBJECTS = $(am__objects_35)
libgdruntime_la_OBJECTS = $(am_libgdruntime_la_OBJECTS)
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am__objects_35 = core/stdc/libgdruntime_convenience_la-errno_.lo
-@DRUNTIME_OS_MINGW_TRUE@am__objects_36 = $(am__objects_20) \
+am__objects_36 = core/stdc/libgdruntime_convenience_la-errno_.lo
+@DRUNTIME_OS_MINGW_TRUE@am__objects_37 = $(am__objects_21) \
@DRUNTIME_OS_MINGW_TRUE@ config/mingw/libgdruntime_convenience_la-msvc.lo
-@DRUNTIME_CPU_AARCH64_TRUE@am__objects_37 = config/aarch64/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_ARM_TRUE@am__objects_38 = config/arm/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_MIPS_TRUE@am__objects_39 = config/mips/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_POWERPC_TRUE@am__objects_40 = config/powerpc/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_41 = config/mingw/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_42 = config/x86/libgdruntime_convenience_la-switchcontext.lo
-@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_43 = config/systemz/libgdruntime_convenience_la-get_tls_offset.lo
-@DRUNTIME_CPU_S390_TRUE@am__objects_44 = config/s390/libgdruntime_convenience_la-get_tls_offset.lo
-am__objects_45 = $(am__objects_5) $(am__objects_7) $(am__objects_9) \
- $(am__objects_11) $(am__objects_13) $(am__objects_15) \
- $(am__objects_17) $(am__objects_19) $(am__objects_36) \
- $(am__objects_23) $(am__objects_37) $(am__objects_38) \
- $(am__objects_39) $(am__objects_40) $(am__objects_41) \
- $(am__objects_42) $(am__objects_43) $(am__objects_44)
-am__objects_46 = $(am__objects_1) $(am__objects_35) $(am__objects_3) \
- $(am__objects_45) $(am__objects_33)
-am__objects_47 = $(am__objects_46)
-am_libgdruntime_convenience_la_OBJECTS = $(am__objects_47)
+@DRUNTIME_CPU_AARCH64_TRUE@am__objects_38 = config/aarch64/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_ARM_TRUE@am__objects_39 = config/arm/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_MIPS_TRUE@am__objects_40 = config/mips/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_POWERPC_TRUE@am__objects_41 = config/powerpc/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_TRUE@am__objects_42 = config/mingw/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_X86_TRUE@@DRUNTIME_OS_MINGW_FALSE@am__objects_43 = config/x86/libgdruntime_convenience_la-switchcontext.lo
+@DRUNTIME_CPU_SYSTEMZ_TRUE@am__objects_44 = config/systemz/libgdruntime_convenience_la-get_tls_offset.lo
+@DRUNTIME_CPU_S390_TRUE@am__objects_45 = config/s390/libgdruntime_convenience_la-get_tls_offset.lo
+am__objects_46 = $(am__objects_6) $(am__objects_8) $(am__objects_10) \
+ $(am__objects_12) $(am__objects_14) $(am__objects_16) \
+ $(am__objects_18) $(am__objects_20) $(am__objects_37) \
+ $(am__objects_24) $(am__objects_38) $(am__objects_39) \
+ $(am__objects_40) $(am__objects_41) $(am__objects_42) \
+ $(am__objects_43) $(am__objects_44) $(am__objects_45)
+am__objects_47 = $(am__objects_1) $(am__objects_36) $(am__objects_3) \
+ $(am__objects_4) $(am__objects_46) $(am__objects_34)
+am__objects_48 = $(am__objects_47)
+am_libgdruntime_convenience_la_OBJECTS = $(am__objects_48)
libgdruntime_convenience_la_OBJECTS = \
$(am_libgdruntime_convenience_la_OBJECTS)
AM_V_P = $(am__v_P_@AM_V@)
@@ -777,7 +778,7 @@ ALL_DRUNTIME_INSTALL_DSOURCES = $(DRUNTIME_DSOURCES) \
$(DRUNTIME_DSOURCES_OPENBSD) $(DRUNTIME_DSOURCES_POSIX) \
$(DRUNTIME_DSOURCES_SOLARIS) $(DRUNTIME_DSOURCES_WINDOWS) \
$(DRUNTIME_DSOURCES_GENERATED) $(DRUNTIME_DISOURCES) \
- $(DRUNTIME_DSOURCES_STDCXX)
+ $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX)
# Setup source files depending on configure
@@ -796,7 +797,7 @@ DRUNTIME_SOURCES_CONFIGURED = $(am__append_1) $(am__append_2) \
# Generated by configure
DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d
ALL_DRUNTIME_SOURCES = $(DRUNTIME_DSOURCES) $(DRUNTIME_CSOURCES) \
- $(DRUNTIME_DSOURCES_STDCXX) \
+ $(DRUNTIME_DSOURCES_ELF) $(DRUNTIME_DSOURCES_STDCXX) \
$(DRUNTIME_SOURCES_CONFIGURED) $(DRUNTIME_DSOURCES_GENERATED)
@@ -918,6 +919,7 @@ DRUNTIME_DSOURCES_DRAGONFLYBSD = core/sys/dragonflybsd/dlfcn.d \
core/sys/dragonflybsd/sys/mman.d core/sys/dragonflybsd/sys/socket.d \
core/sys/dragonflybsd/sys/sysctl.d core/sys/dragonflybsd/time.d
+DRUNTIME_DSOURCES_ELF = core/sys/elf/package.d
DRUNTIME_DSOURCES_FREEBSD = core/sys/freebsd/config.d \
core/sys/freebsd/dlfcn.d core/sys/freebsd/err.d \
core/sys/freebsd/execinfo.d core/sys/freebsd/netinet/in_.d \
@@ -1374,6 +1376,10 @@ rt/util/$(am__dirstamp):
rt/util/typeinfo.lo: rt/util/$(am__dirstamp)
rt/util/utility.lo: rt/util/$(am__dirstamp)
core/stdc/libgdruntime_la-errno_.lo: core/stdc/$(am__dirstamp)
+core/sys/elf/$(am__dirstamp):
+ @$(MKDIR_P) core/sys/elf
+ @: > core/sys/elf/$(am__dirstamp)
+core/sys/elf/package.lo: core/sys/elf/$(am__dirstamp)
core/stdcpp/$(am__dirstamp):
@$(MKDIR_P) core/stdcpp
@: > core/stdcpp/$(am__dirstamp)
@@ -2016,6 +2022,8 @@ mostlyclean-compile:
-rm -f core/sys/dragonflybsd/netinet/*.lo
-rm -f core/sys/dragonflybsd/sys/*.$(OBJEXT)
-rm -f core/sys/dragonflybsd/sys/*.lo
+ -rm -f core/sys/elf/*.$(OBJEXT)
+ -rm -f core/sys/elf/*.lo
-rm -f core/sys/freebsd/*.$(OBJEXT)
-rm -f core/sys/freebsd/*.lo
-rm -f core/sys/freebsd/netinet/*.$(OBJEXT)
@@ -2184,6 +2192,7 @@ clean-libtool:
-rm -rf core/sys/dragonflybsd/.libs core/sys/dragonflybsd/_libs
-rm -rf core/sys/dragonflybsd/netinet/.libs core/sys/dragonflybsd/netinet/_libs
-rm -rf core/sys/dragonflybsd/sys/.libs core/sys/dragonflybsd/sys/_libs
+ -rm -rf core/sys/elf/.libs core/sys/elf/_libs
-rm -rf core/sys/freebsd/.libs core/sys/freebsd/_libs
-rm -rf core/sys/freebsd/netinet/.libs core/sys/freebsd/netinet/_libs
-rm -rf core/sys/freebsd/sys/.libs core/sys/freebsd/sys/_libs
@@ -2345,6 +2354,7 @@ distclean-generic:
-rm -f core/sys/dragonflybsd/$(am__dirstamp)
-rm -f core/sys/dragonflybsd/netinet/$(am__dirstamp)
-rm -f core/sys/dragonflybsd/sys/$(am__dirstamp)
+ -rm -f core/sys/elf/$(am__dirstamp)
-rm -f core/sys/freebsd/$(am__dirstamp)
-rm -f core/sys/freebsd/netinet/$(am__dirstamp)
-rm -f core/sys/freebsd/sys/$(am__dirstamp)
diff --git a/libphobos/libdruntime/__builtins.di b/libphobos/libdruntime/__builtins.di
index e5c448e..cf05333 100644
--- a/libphobos/libdruntime/__builtins.di
+++ b/libphobos/libdruntime/__builtins.di
@@ -19,25 +19,23 @@ module __builtins;
* into the D compiler.
*/
-import core.stdc.stdarg;
-
-alias va_list = core.stdc.stdarg.va_list;
+alias va_list = imported!"core.stdc.stdarg".va_list;
version (Posix)
{
version (X86_64)
- alias __va_list_tag = core.stdc.stdarg.__va_list_tag;
+ alias __va_list_tag = imported!"core.stdc.stdarg".__va_list_tag;
}
-alias __builtin_va_start = core.stdc.stdarg.va_start;
+alias __builtin_va_start = imported!"core.stdc.stdarg".va_start;
-alias __builtin_va_end = core.stdc.stdarg.va_end;
+alias __builtin_va_end = imported!"core.stdc.stdarg".va_end;
-alias __builtin_va_copy = core.stdc.stdarg.va_copy;
+alias __builtin_va_copy = imported!"core.stdc.stdarg".va_copy;
/* dmd's ImportC rewrites __builtin_va_arg into an instantiation of va_arg
*/
-alias va_arg = core.stdc.stdarg.va_arg;
+alias va_arg = imported!"core.stdc.stdarg".va_arg;
version (CRuntime_Microsoft)
{
@@ -63,11 +61,9 @@ version (DigitalMars)
alias __builtin_huge_valf = __builtin_inff;
alias __builtin_huge_vall = __builtin_infl;
- import core.stdc.math;
-
- alias __builtin_fabs = core.stdc.math.fabs;
- alias __builtin_fabsf = core.stdc.math.fabsf;
- alias __builtin_fabsl = core.stdc.math.fabsl;
+ alias __builtin_fabs = imported!"core.stdc.math".fabs;
+ alias __builtin_fabsf = imported!"core.stdc.math".fabsf;
+ alias __builtin_fabsl = imported!"core.stdc.math".fabsl;
ushort __builtin_bswap16()(ushort value)
{
@@ -87,10 +83,13 @@ version (DigitalMars)
return core.bitop.bswap(value);
}
+ // Lazily imported on first use
+ private alias c_long = imported!"core.stdc.config".c_long;
+
// Stub these out to no-ops
- int __builtin_constant_p(T)(T exp) { return 0; } // should be something like __traits(compiles, enum X = expr)
- long __builtin_expect()(long exp, long c) { return exp; }
- void* __builtin_assume_aligned()(const void* p, size_t align_, ...) { return cast(void*)p; }
+ int __builtin_constant_p(T)(T exp) { return 0; } // should be something like __traits(compiles, enum X = expr)
+ c_long __builtin_expect()(c_long exp, c_long c) { return exp; }
+ void* __builtin_assume_aligned()(const void* p, size_t align_, ...) { return cast(void*)p; }
// https://releases.llvm.org/13.0.0/tools/clang/docs/LanguageExtensions.html#builtin-assume
void __builtin_assume(T)(lazy T arg) { }
diff --git a/libphobos/libdruntime/core/internal/array/appending.d b/libphobos/libdruntime/core/internal/array/appending.d
index 172263c..5d4f3b4 100644
--- a/libphobos/libdruntime/core/internal/array/appending.d
+++ b/libphobos/libdruntime/core/internal/array/appending.d
@@ -76,79 +76,55 @@ template _d_arrayappendcTXImpl(Tarr : T[], T)
alias _d_arrayappendcTXTrace = _d_HookTraceImpl!(Tarr, _d_arrayappendcTX, errorMessage);
}
-/// Implementation of `_d_arrayappendT` and `_d_arrayappendTTrace`
-template _d_arrayappendTImpl(Tarr : T[], T)
+/// Implementation of `_d_arrayappendT`
+ref Tarr _d_arrayappendT(Tarr : T[], T)(return ref scope Tarr x, scope Tarr y) @trusted
{
- import core.internal.array.utils : _d_HookTraceImpl;
-
- private enum errorMessage = "Cannot append to array if compiling without support for runtime type information!";
-
- /**
- * Append array `y` to array `x`.
- * Params:
- * x = what array to append to, taken as a reference
- * y = what should be appended
- * Returns:
- * The new value of `x`
- * Bugs:
- * This function template was ported from a much older runtime hook that bypassed safety,
- * purity, and throwabilty checks. To prevent breaking existing code, this function template
- * is temporarily declared `@trusted pure` until the implementation can be brought up to modern D expectations.
- */
- static if (isCopyingNothrow!T)
- ref Tarr _d_arrayappendT(return ref scope Tarr x, scope Tarr y) @trusted pure nothrow
- {
- pragma(inline, false);
+ pragma(inline, false);
- mixin(_d_arrayappendTBody);
- }
- else
- ref Tarr _d_arrayappendT(return ref scope Tarr x, scope Tarr y) @trusted pure
- {
- pragma(inline, false);
-
- mixin(_d_arrayappendTBody);
- }
+ import core.stdc.string : memcpy;
+ import core.internal.traits : hasElaborateCopyConstructor, Unqual;
+ import core.lifetime : copyEmplace;
- private enum _d_arrayappendTBody = q{
- import core.stdc.string : memcpy;
- import core.internal.traits : hasElaborateCopyConstructor, Unqual;
- import core.lifetime : copyEmplace;
+ auto length = x.length;
- auto length = x.length;
+ _d_arrayappendcTXImpl!Tarr._d_arrayappendcTX(x, y.length);
- _d_arrayappendcTXImpl!Tarr._d_arrayappendcTX(x, y.length);
+ static if (hasElaborateCopyConstructor!T)
+ {
+ foreach (i, ref elem; y)
+ copyEmplace(elem, x[length + i]);
+ }
+ else
+ {
+ // blit all elements at once
+ if (y.length)
+ memcpy(cast(Unqual!T *)&x[length], cast(Unqual!T *)&y[0], y.length * T.sizeof);
+ }
- static if (hasElaborateCopyConstructor!T)
- {
- foreach (i; 0 .. y.length)
- copyEmplace(y[i], x[length + i]);
- }
- else
- {
- // blit all elements at once
- if (y.length)
- memcpy(cast(Unqual!T *)&x[length], cast(Unqual!T *)&y[0], y.length * T.sizeof);
- }
+ return x;
+}
- return x;
- };
+/**
+ * TraceGC wrapper around $(REF _d_arrayappendT, core,internal,array,appending).
+ */
+ref Tarr _d_arrayappendTTrace(Tarr : T[], T)(string file, int line, string funcname, return ref scope Tarr x, scope Tarr y) @trusted
+{
+ version (D_TypeInfo)
+ {
+ import core.internal.array.utils: TraceHook, gcStatsPure, accumulatePure;
+ mixin(TraceHook!(Tarr.stringof, "_d_arrayappendT"));
- /**
- * TraceGC wrapper around $(REF _d_arrayappendT, rt,array,appending,_d_arrayappendTImpl).
- * Bugs:
- * This function template was ported from a much older runtime hook that bypassed safety,
- * purity, and throwabilty checks. To prevent breaking existing code, this function template
- * is temporarily declared `@trusted pure` until the implementation can be brought up to modern D expectations.
- */
- alias _d_arrayappendTTrace = _d_HookTraceImpl!(Tarr, _d_arrayappendT, errorMessage);
+ return _d_arrayappendT(x, y);
+ }
+ else
+ assert(0, "Cannot append to array if compiling without support for runtime type information!");
}
@safe unittest
{
double[] arr1;
foreach (i; 0 .. 4)
- _d_arrayappendTImpl!(typeof(arr1))._d_arrayappendT(arr1, [cast(double)i]);
+ _d_arrayappendT(arr1, [cast(double)i]);
assert(arr1 == [0.0, 1.0, 2.0, 3.0]);
}
@@ -167,7 +143,7 @@ template _d_arrayappendTImpl(Tarr : T[], T)
Item[] arr2 = [Item(), Item()];
Item[] arr1_org = [Item(), Item()];
arr1_org ~= arr2;
- _d_arrayappendTImpl!(typeof(arr1))._d_arrayappendT(arr1, arr2);
+ _d_arrayappendT(arr1, arr2);
// postblit should have triggered on at least the items in arr2
assert(blitted >= arr2.length);
@@ -187,7 +163,7 @@ template _d_arrayappendTImpl(Tarr : T[], T)
Item[][] arr1 = [[Item()]];
Item[][] arr2 = [[Item()]];
- _d_arrayappendTImpl!(typeof(arr1))._d_arrayappendT(arr1, arr2);
+ _d_arrayappendT(arr1, arr2);
// no postblit should have happened because arr{1,2} contain dynamic arrays
assert(blitted == 0);
@@ -207,7 +183,7 @@ template _d_arrayappendTImpl(Tarr : T[], T)
Item[1][] arr1 = [[Item()]];
Item[1][] arr2 = [[Item()]];
- _d_arrayappendTImpl!(typeof(arr1))._d_arrayappendT(arr1, arr2);
+ _d_arrayappendT(arr1, arr2);
// copy constructor should have been invoked because arr{1,2} contain static arrays
assert(copied >= arr2.length);
}
@@ -215,8 +191,8 @@ template _d_arrayappendTImpl(Tarr : T[], T)
@safe nothrow unittest
{
string str;
- _d_arrayappendTImpl!(typeof(str))._d_arrayappendT(str, "a");
- _d_arrayappendTImpl!(typeof(str))._d_arrayappendT(str, "b");
- _d_arrayappendTImpl!(typeof(str))._d_arrayappendT(str, "c");
+ _d_arrayappendT(str, "a");
+ _d_arrayappendT(str, "b");
+ _d_arrayappendT(str, "c");
assert(str == "abc");
}
diff --git a/libphobos/libdruntime/core/internal/array/utils.d b/libphobos/libdruntime/core/internal/array/utils.d
index 7a829a0..41aa57f 100644
--- a/libphobos/libdruntime/core/internal/array/utils.d
+++ b/libphobos/libdruntime/core/internal/array/utils.d
@@ -11,7 +11,7 @@ module core.internal.array.utils;
import core.internal.traits : Parameters;
-private auto gcStatsPure() nothrow pure
+auto gcStatsPure() nothrow pure
{
import core.memory : GC;
@@ -19,7 +19,7 @@ private auto gcStatsPure() nothrow pure
return impureBypass();
}
-private ulong accumulatePure(string file, int line, string funcname, string name, ulong size) nothrow pure
+ulong accumulatePure(string file, int line, string funcname, string name, ulong size) nothrow pure
{
static ulong impureBypass(string file, int line, string funcname, string name, ulong size) @nogc nothrow
{
@@ -35,41 +35,32 @@ private ulong accumulatePure(string file, int line, string funcname, string name
}
/**
- * TraceGC wrapper around runtime hook `Hook`.
+ * TraceGC wrapper generator around the runtime hook `Hook`.
* Params:
- * T = Type of hook to report to accumulate
- * Hook = The hook to wrap
- * errorMessage = The error message incase `version != D_TypeInfo`
- * file = File that called `_d_HookTraceImpl`
- * line = Line inside of `file` that called `_d_HookTraceImpl`
- * funcname = Function that called `_d_HookTraceImpl`
- * parameters = Parameters that will be used to call `Hook`
- * Bugs:
- * This function template needs be between the compiler and a much older runtime hook that bypassed safety,
- * purity, and throwabilty checks. To prevent breaking existing code, this function template
- * is temporarily declared `@trusted pure` until the implementation can be brought up to modern D expectations.
-*/
-auto _d_HookTraceImpl(T, alias Hook, string errorMessage)(string file, int line, string funcname, Parameters!Hook parameters) @trusted pure
+ * Type = The type of hook to report to accumulate
+ * Hook = The name hook to wrap
+ */
+template TraceHook(string Type, string Hook)
{
- version (D_TypeInfo)
- {
+ const char[] TraceHook = q{
+ import core.internal.array.utils : gcStatsPure, accumulatePure;
+
pragma(inline, false);
- string name = T.stringof;
+ string name = } ~ "`" ~ Type ~ "`;" ~ q{
// FIXME: use rt.tracegc.accumulator when it is accessable in the future.
version (tracegc)
- {
+ } ~ "{\n" ~ q{
import core.stdc.stdio;
printf("%sTrace file = '%.*s' line = %d function = '%.*s' type = %.*s\n",
- Hook.stringof.ptr,
+ } ~ "\"" ~ Hook ~ "\".ptr," ~ q{
file.length, file.ptr,
line,
funcname.length, funcname.ptr,
name.length, name.ptr
);
- }
-
+ } ~ "}\n" ~ q{
ulong currentlyAllocated = gcStatsPure().allocatedInCurrentThread;
scope(exit)
@@ -86,6 +77,29 @@ auto _d_HookTraceImpl(T, alias Hook, string errorMessage)(string file, int line,
assert(0);
}
}
+ };
+}
+
+/**
+ * TraceGC wrapper around runtime hook `Hook`.
+ * Params:
+ * T = Type of hook to report to accumulate
+ * Hook = The hook to wrap
+ * errorMessage = The error message incase `version != D_TypeInfo`
+ * file = File that called `_d_HookTraceImpl`
+ * line = Line inside of `file` that called `_d_HookTraceImpl`
+ * funcname = Function that called `_d_HookTraceImpl`
+ * parameters = Parameters that will be used to call `Hook`
+ * Bugs:
+ * This function template needs be between the compiler and a much older runtime hook that bypassed safety,
+ * purity, and throwabilty checks. To prevent breaking existing code, this function template
+ * is temporarily declared `@trusted pure` until the implementation can be brought up to modern D expectations.
+*/
+auto _d_HookTraceImpl(T, alias Hook, string errorMessage)(string file, int line, string funcname, Parameters!Hook parameters) @trusted pure
+{
+ version (D_TypeInfo)
+ {
+ mixin(TraceHook!(T.stringof, __traits(identifier, Hook)));
return Hook(parameters);
}
else
diff --git a/libphobos/libdruntime/core/internal/traits.d b/libphobos/libdruntime/core/internal/traits.d
index 0d733f2..0b4890c 100644
--- a/libphobos/libdruntime/core/internal/traits.d
+++ b/libphobos/libdruntime/core/internal/traits.d
@@ -234,7 +234,7 @@ if (Ts.length > 0)
template classInstanceAlignment(T)
if (is(T == class))
{
- alias classInstanceAlignment = maxAlignment!(void*, typeof(T.tupleof));
+ enum classInstanceAlignment = __traits(classInstanceAlignment, T);
}
/// See $(REF hasElaborateMove, std,traits)
diff --git a/libphobos/libdruntime/core/lifetime.d b/libphobos/libdruntime/core/lifetime.d
index 47fed9d..6502e59 100644
--- a/libphobos/libdruntime/core/lifetime.d
+++ b/libphobos/libdruntime/core/lifetime.d
@@ -200,12 +200,10 @@ Returns: The newly constructed object.
T emplace(T, Args...)(void[] chunk, auto ref Args args)
if (is(T == class))
{
- import core.internal.traits : maxAlignment;
-
enum classSize = __traits(classInstanceSize, T);
assert(chunk.length >= classSize, "chunk size too small.");
- enum alignment = maxAlignment!(void*, typeof(T.tupleof));
+ enum alignment = __traits(classInstanceAlignment, T);
assert((cast(size_t) chunk.ptr) % alignment == 0, "chunk is not aligned.");
return emplace!T(cast(T)(chunk.ptr), forward!args);
@@ -242,9 +240,7 @@ T emplace(T, Args...)(void[] chunk, auto ref Args args)
int virtualGetI() { return i; }
}
- import core.internal.traits : classInstanceAlignment;
-
- align(classInstanceAlignment!C) byte[__traits(classInstanceSize, C)] buffer;
+ align(__traits(classInstanceAlignment, C)) byte[__traits(classInstanceSize, C)] buffer;
C c = emplace!C(buffer[], 42);
assert(c.virtualGetI() == 42);
}
@@ -290,7 +286,8 @@ T emplace(T, Args...)(void[] chunk, auto ref Args args)
}
int var = 6;
- align(__conv_EmplaceTestClass.alignof) ubyte[__traits(classInstanceSize, __conv_EmplaceTestClass)] buf;
+ align(__traits(classInstanceAlignment, __conv_EmplaceTestClass))
+ ubyte[__traits(classInstanceSize, __conv_EmplaceTestClass)] buf;
auto support = (() @trusted => cast(__conv_EmplaceTestClass)(buf.ptr))();
auto fromRval = emplace!__conv_EmplaceTestClass(support, 1);
@@ -1198,7 +1195,7 @@ pure nothrow @safe /* @nogc */ unittest
}
void[] buf;
- static align(A.alignof) byte[__traits(classInstanceSize, A)] sbuf;
+ static align(__traits(classInstanceAlignment, A)) byte[__traits(classInstanceSize, A)] sbuf;
buf = sbuf[];
auto a = emplace!A(buf, 55);
assert(a.x == 55 && a.y == 55);
diff --git a/libphobos/libdruntime/core/memory.d b/libphobos/libdruntime/core/memory.d
index 27c84e7f..b63b111 100644
--- a/libphobos/libdruntime/core/memory.d
+++ b/libphobos/libdruntime/core/memory.d
@@ -31,7 +31,7 @@
$(LI Maintain another reference to that same data in another thread that the
GC does know about.)
$(LI Disable GC collection cycles while that thread is active with $(LREF disable)/$(LREF enable).)
- $(LI Register the thread with the GC using $(REF thread_attachThis, core,thread)/$(REF thread_detachThis, core,thread).)
+ $(LI Register the thread with the GC using $(REF thread_attachThis, core,thread,osthread)/$(REF thread_detachThis, core,thread,threadbase).)
)
)
)
diff --git a/libphobos/libdruntime/core/simd.d b/libphobos/libdruntime/core/simd.d
index 11a4711..f1bf59b 100644
--- a/libphobos/libdruntime/core/simd.d
+++ b/libphobos/libdruntime/core/simd.d
@@ -409,6 +409,28 @@ version (D_SIMD)
* op2 = second operand
* Returns:
* result of opcode
+ * Example:
+ ---
+ import core.simd;
+ import core.stdc.stdio;
+
+ void main()
+ {
+ float4 A = [2.34f, -70000.0f, 0.00001f, 345.5f];
+ float4 R = A;
+ R = cast(float4) __simd(XMM.RCPSS, R, A);
+ printf("%g %g %g %g\n", R.array[0], R.array[1], R.array[2], R.array[3]);
+ }
+ ---
+ * Prints `0.427368 -70000 1e-05 345.5`.
+ * The use of the two operand form for `XMM.RCPSS` is necessary because the result of the instruction
+ * contains elements of both operands.
+ * Example:
+ ---
+ double[2] A = [56.0, -75.0];
+ double2 R = cast(double2) __simd(XMM.LODUPD, *cast(double2*)A.ptr);
+ ---
+ * The cast to `double2*` is necessary because the type of `*A.ptr` is `double`.
*/
pure @safe void16 __simd(XMM opcode, void16 op1, void16 op2);
@@ -480,6 +502,7 @@ version (D_SIMD)
/*****
* For "store" operations of the form:
* op1 op= op2
+ * such as MOVLPS.
* Returns:
* op2
* These cannot be marked as pure, as semantic() doesn't check them.
@@ -487,6 +510,7 @@ version (D_SIMD)
@safe void16 __simd_sto(XMM opcode, void16 op1, void16 op2);
@safe void16 __simd_sto(XMM opcode, double op1, void16 op2); ///
@safe void16 __simd_sto(XMM opcode, float op1, void16 op2); ///
+ @safe void16 __simd_sto(XMM opcode, void16 op1, long op2); ///
///
unittest
diff --git a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d
index 035bba5..2662fdb 100644
--- a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d
+++ b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d
@@ -13,108 +13,13 @@ extern (C):
import core.stdc.stdint;
public import core.sys.dragonflybsd.sys.elf_common;
-alias uint16_t Elf32_Half;
-alias uint32_t Elf32_Word;
-alias int32_t Elf32_Sword;
alias uint64_t Elf32_Lword;
-alias uint32_t Elf32_Addr;
-alias uint32_t Elf32_Off;
alias Elf32_Word Elf32_Hashelt;
alias Elf32_Word Elf32_Size;
alias Elf32_Sword Elf32_Ssize;
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf32_Phdr
-{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-}
-
-struct Elf32_Dyn
-{
- Elf32_Sword d_tag;
- union _d_un
- {
- Elf32_Word d_val;
- Elf32_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-extern (D) pure @safe
-{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-}
-
alias Elf_Note Elf32_Nhdr;
-struct Elf32_Move
-{
- Elf32_Lword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-extern (D) pure
-{
- auto ELF32_M_SYM(I)(I info) @safe { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf32_Cap
{
Elf32_Word c_tag;
@@ -125,63 +30,7 @@ struct Elf32_Cap
} _c_un c_un;
}
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Half st_shndx;
-}
-
-extern (D) pure
-{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) @safe { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) @safe { return (bind << 4) + (type & 0xf); }
- auto ELF32_ST_VISIBILITY(O)(O o) @safe { return o & 0x03; }
-}
-
-struct Elf32_Verdef
-{
- Elf32_Half vd_version;
- Elf32_Half vd_flags;
- Elf32_Half vd_ndx;
- Elf32_Half vd_cnt;
- Elf32_Word vd_hash;
- Elf32_Word vd_aux;
- Elf32_Word vd_next;
-}
-
-struct Elf32_Verdaux
-{
- Elf32_Word vda_name;
- Elf32_Word vda_next;
-}
-
-struct Elf32_Verneed
-{
- Elf32_Half vn_version;
- Elf32_Half vn_cnt;
- Elf32_Word vn_file;
- Elf32_Word vn_aux;
- Elf32_Word vn_next;
-}
-
-struct Elf32_Vernaux
-{
- Elf32_Word vna_hash;
- Elf32_Half vna_flags;
- Elf32_Half vna_other;
- Elf32_Word vna_name;
- Elf32_Word vna_next;
-}
-
-alias Elf32_Half Elf32_Versym;
-
-struct Elf32_Syminfo
+extern (D)
{
- Elf32_Half si_boundto;
- Elf32_Half si_flags;
+ auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
diff --git a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
index f7d9247..6431bd2 100644
--- a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
+++ b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
@@ -13,91 +13,13 @@ extern (C):
import core.stdc.stdint;
public import core.sys.dragonflybsd.sys.elf_common;
-alias uint16_t Elf64_Half;
-alias uint32_t Elf64_Word;
-alias int32_t Elf64_Sword;
alias uint64_t Elf64_Lword;
-alias uint64_t Elf64_Xword;
-alias int64_t Elf64_Sxword;
-alias uint64_t Elf64_Addr;
-alias uint64_t Elf64_Off;
alias Elf64_Word Elf64_Hashelt;
alias Elf64_Xword Elf64_Size;
alias Elf64_Sxword Elf64_Ssize;
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-struct Elf64_Phdr
-{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
-}
-
-struct Elf64_Dyn
-{
- Elf64_Sxword d_tag;
- union _d_un
- {
- Elf64_Xword d_val;
- Elf64_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
extern (D) pure
{
- auto ELF64_R_SYM(I)(I i) @safe { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) @safe { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) @safe { return (sym << 32) + (type & 0xffffffff); }
-
auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; }
auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; }
auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; }
@@ -105,22 +27,6 @@ extern (D) pure
alias Elf_Note Elf64_Nhdr;
-struct Elf64_Move
-{
- Elf64_Lword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-
-extern (D) pure
-{
- auto ELF64_M_SYM(I)(I info) @safe { return info >> 8; }
- auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF64_M_INFO(S, SZ)(S sym, SZ size) @safe { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf64_Cap
{
Elf64_Xword c_tag;
@@ -131,63 +37,7 @@ struct Elf64_Cap
} _c_un c_un;
}
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
-extern (D) pure
-{
- auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF64_ST_TYPE(T)(T val) @safe { return val & 0xf; }
- auto ELF64_ST_INFO(B, T)(B bind, T type) @safe { return (bind << 4) + (type & 0xf); }
- auto ELF64_ST_VISIBILITY(O)(O o) @safe { return o & 0x03; }
-}
-
-struct Elf64_Verdef
-{
- Elf64_Half vd_version;
- Elf64_Half vd_flags;
- Elf64_Half vd_ndx;
- Elf64_Half vd_cnt;
- Elf64_Word vd_hash;
- Elf64_Word vd_aux;
- Elf64_Word vd_next;
-}
-
-struct Elf64_Verdaux
-{
- Elf64_Word vda_name;
- Elf64_Word vda_next;
-}
-
-struct Elf64_Verneed
-{
- Elf64_Half vn_version;
- Elf64_Half vn_cnt;
- Elf64_Word vn_file;
- Elf64_Word vn_aux;
- Elf64_Word vn_next;
-}
-
-struct Elf64_Vernaux
-{
- Elf64_Word vna_hash;
- Elf64_Half vna_flags;
- Elf64_Half vna_other;
- Elf64_Word vna_name;
- Elf64_Word vna_next;
-}
-
-alias Elf64_Half Elf64_Versym;
-
-struct Elf64_Syminfo
+extern (D)
{
- Elf64_Half si_boundto;
- Elf64_Half si_flags;
+ auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
diff --git a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
index eef6a89..90e5861 100644
--- a/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
+++ b/libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
@@ -11,6 +11,7 @@ version (DragonFlyBSD):
extern (C):
import core.stdc.stdint;
+public import core.sys.elf;
struct Elf_Note
{
@@ -27,60 +28,7 @@ struct Elf_GNU_Hash_Header
uint32_t gh_shift2;
}
-enum EI_MAG0 = 0;
-enum EI_MAG1 = 1;
-enum EI_MAG2 = 2;
-enum EI_MAG3 = 3;
-enum EI_CLASS = 4;
-enum EI_DATA = 5;
-enum EI_VERSION = 6;
-enum EI_OSABI = 7;
-enum EI_ABIVERSION = 8;
enum OLD_EI_BRAND = 8;
-enum EI_PAD = 9;
-enum EI_NIDENT = 16;
-
-enum ELFMAG0 = 0x7f;
-enum ELFMAG1 = 'E';
-enum ELFMAG2 = 'L';
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = 0;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_LINUX = 3;
-enum ELFOSABI_HURD = 4;
-enum ELFOSABI_86OPEN = 5;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_MONTEREY = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_OPENVMS = 13;
-enum ELFOSABI_NSK = 14;
-enum ELFOSABI_AROS = 15;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
-
-// just a pointer
-enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
extern (D) pure @safe
{
@@ -90,587 +38,44 @@ extern (D) pure @safe
ehdr.e_ident[EI_MAG3] == ELFMAG3; }
}
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_LOOS = 0xfe00;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-enum EM_PARISC = 15;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_X86_64 = 62;
-enum EM_AMD64 = 62;
-enum EM_PDSP = 63;
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_VIDEOCORE = 95;
-enum EM_TMM_GPP = 96;
-enum EM_NS32K = 97;
-enum EM_TPC = 98;
-enum EM_SNP1K = 99;
-enum EM_ST200 = 100;
-enum EM_IP2K = 101;
-enum EM_MAX = 102;
-enum EM_CR = 103;
-enum EM_F2MC16 = 104;
-enum EM_MSP430 = 105;
-enum EM_BLACKFIN = 106;
-enum EM_SE_C33 = 107;
-enum EM_SEP = 108;
-enum EM_ARCA = 109;
-enum EM_UNICORE = 110;
-enum EM_DXP = 112;
-enum EM_ALTERA_NIOS2 =113;
-enum EM_CRX = 114;
-enum EM_XGATE = 115;
-enum EM_C166 = 116;
-enum EM_M16C = 117;
-enum EM_DSPIC30F = 118;
-enum EM_CE = 119;
-enum EM_M32C = 120;
-enum EM_res121 = 121;
-enum EM_res122 = 122;
-enum EM_res123 = 123;
-enum EM_res124 = 124;
-enum EM_res125 = 125;
-enum EM_res126 = 126;
-enum EM_res127 = 127;
-enum EM_res128 = 128;
-enum EM_res129 = 129;
-enum EM_res130 = 130;
-enum EM_TSK3000 = 131;
-enum EM_RS08 = 132;
-enum EM_res133 = 133;
-enum EM_ECOG2 = 134;
-enum EM_SCORE = 135;
-enum EM_SCORE7 = 135;
-enum EM_DSP24 = 136;
-enum EM_VIDEOCORE3 = 137;
-enum EM_LATTICEMICO32 = 138;
-enum EM_SE_C17 = 139;
-enum EM_TI_C6000 = 140;
-enum EM_TI_C2000 = 141;
-enum EM_TI_C5500 = 142;
-enum EM_res143 = 143;
-enum EM_res144 = 144;
-enum EM_res145 = 145;
-enum EM_res146 = 146;
-enum EM_res147 = 147;
-enum EM_res148 = 148;
-enum EM_res149 = 149;
-enum EM_res150 = 150;
-enum EM_res151 = 151;
-enum EM_res152 = 152;
-enum EM_res153 = 153;
-enum EM_res154 = 154;
-enum EM_res155 = 155;
-enum EM_res156 = 156;
-enum EM_res157 = 157;
-enum EM_res158 = 158;
-enum EM_res159 = 159;
-enum EM_MMDSP_PLUS = 160;
-enum EM_CYPRESS_M8C = 161;
-enum EM_R32C = 162;
-enum EM_TRIMEDIA = 163;
-enum EM_QDSP6 = 164;
-enum EM_8051 = 165;
-enum EM_STXP7X = 166;
-enum EM_NDS32 = 167;
-enum EM_ECOG1 = 168;
-enum EM_ECOG1X = 168;
-enum EM_MAXQ30 = 169;
-enum EM_XIMO16 = 170;
-enum EM_MANIK = 171;
-enum EM_CRAYNV2 = 172;
-enum EM_RX = 173;
-enum EM_METAG = 174;
-enum EM_MCST_ELBRUS = 175;
-enum EM_ECOG16 = 176;
-enum EM_CR16 = 177;
-enum EM_ETPU = 178;
-enum EM_SLE9X = 179;
-enum EM_L1OM = 180;
-enum EM_K1OM = 181;
-enum EM_INTEL182 = 182;
-enum EM_res183 = 183;
-enum EM_res184 = 184;
-enum EM_AVR32 = 185;
-enum EM_STM8 = 186;
-enum EM_TILE64 = 187;
-enum EM_TILEPRO = 188;
-enum EM_MICROBLAZE = 189;
-enum EM_CUDA = 190;
-enum EM_TILEGX = 191;
-
enum EM_486 = 6;
enum EM_MIPS_RS4_BE = 10;
enum EM_ALPHA_STD = 41;
-enum EM_ALPHA = 0x9026;
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_LOOS = 0x60000000;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-enum PT_GNU_EH_FRAME = PT_LOOS + 0x474e550; /* Frame unwind information */
-enum PT_SUNW_EH_FRAME = PT_GNU_EH_FRAME; /* Solaris uses the same value */
-enum PT_GNU_STACK = PT_LOOS + 0x474e551; /* Stack flags */
-enum PT_GNU_RELRO = PT_LOOS + 0x474e552; /* Read-only after relocation */
-
-enum PF_X = 0x1;
-enum PF_W = 0x2;
-enum PF_R = 0x4;
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
-
-enum PN_XNUM = 0xffff;
-
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-
-enum SHT_LOOS = 0x60000000;
-enum SHT_LOSUNW = 0x6ffffff4;
+enum PT_SUNW_EH_FRAME = PT_GNU_EH_FRAME;
enum SHT_GNU_INCREMENTAL_INPUTS = 0x6fff4700;
-enum SHT_GNU_ATTRIBUTES = 0x6ffffff5;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_GNU_LIBLIST = 0x6ffffff7;
-//enum SHT_SUNW_dof = 0x6ffffff4;
-//enum SHT_SUNW_cap = 0x6ffffff5;
-//enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
enum SHT_SUNW_verdef = 0x6ffffffd;
enum SHT_SUNW_verneed = 0x6ffffffe;
enum SHT_SUNW_versym = 0x6fffffff;
-enum SHT_GNU_verdef = SHT_SUNW_verdef;
-enum SHT_GNU_verneed = SHT_SUNW_verneed;
-enum SHT_GNU_versym = SHT_SUNW_versym;
-
-enum SHT_LOPROC = 0x70000000;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0x8fffffff;
-
-/*
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
-enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
-enum SHT_SUNW_DEBUG = 0x6ffffff9;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_AMD64_UNWIND = 0x70000001;
-enum SHT_ARM_EXIDX = 0x70000001;
-enum SHT_ARM_PREEMPTMAP = 0x70000002;
-enum SHT_ARM_ATTRIBUTES = 0x70000003;
-enum SHT_ARM_DEBUGOVERLAY = 0x70000004;
-enum SHT_ARM_OVERLAYSECTION = 0x70000005;
-enum SHT_MIPS_REGINFO = 0x70000006;
-enum SHT_MIPS_OPTIONS = 0x7000000d;
-enum SHT_MIPS_DWARF = 0x7000001e;
-*/
-
-enum SHF_WRITE = (1 << 0);
-enum SHF_ALLOC = (1 << 1);
-enum SHF_EXECINSTR = (1 << 2);
-enum SHF_MERGE = (1 << 4);
-enum SHF_STRINGS = (1 << 5);
-enum SHF_INFO_LINK = (1 << 6);
-enum SHF_LINK_ORDER = (1 << 7);
-enum SHF_OS_NONCONFORMING = (1 << 8);
-enum SHF_GROUP = (1 << 9);
-enum SHF_TLS = (1 << 10);
-enum SHF_COMPRESSED = (1 << 11);
-
-enum SHF_MASKOS = 0x0ff00000;
-enum SHF_MASKPROC = 0xf0000000;
-
enum NT_PRSTATUS = 1;
enum NT_FPREGSET = 2;
enum NT_PRPSINFO = 3;
enum NT_TASKSTRUCT = 4;
enum NT_AUXV = 6;
-/*
-enum NT_THRMISC = 7;
-enum NT_PROCSTAT_PROC = 8;
-enum NT_PROCSTAT_FILES = 9;
-enum NT_PROCSTAT_VMMAP = 10;
-enum NT_PROCSTAT_GROUPS = 11;
-enum NT_PROCSTAT_UMASK = 12;
-enum NT_PROCSTAT_RLIMIT = 13;
-enum NT_PROCSTAT_OSREL = 14;
-enum NT_PROCSTAT_PSSTRINGS = 15;
-enum NT_PROCSTAT_AUXV = 16;
-*/
-
-enum STN_UNDEF = 0;
-
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOOS = 10;
-enum STB_HIOS = 12;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_GNU_IFUNC = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
-
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
-/*
-enum STV_EXPORTED = 4;
-enum STV_SINGLETON = 5;
-enum STV_ELIMINATE = 6;
-*/
-
-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;
-enum DT_RELAENT = 9;
-enum DT_STRSZ = 10;
-enum DT_SYMENT = 11;
-enum DT_INIT = 12;
-enum DT_FINI = 13;
-enum DT_SONAME = 14;
-enum DT_RPATH = 15;
-enum DT_SYMBOLIC = 16;
-enum DT_REL = 17;
-enum DT_RELSZ = 18;
-enum DT_RELENT = 19;
-enum DT_PLTREL = 20;
-enum DT_DEBUG = 21;
-enum DT_TEXTREL = 22;
-enum DT_JMPREL = 23;
-enum DT_BIND_NOW = 24;
-enum DT_INIT_ARRAY = 25;
-enum DT_FINI_ARRAY = 26;
-enum DT_INIT_ARRAYSZ = 27;
-enum DT_FINI_ARRAYSZ = 28;
-enum DT_RUNPATH = 29;
-enum DT_FLAGS = 30;
-
-enum DT_ENCODING = 32;
-enum DT_PREINIT_ARRAY = 32;
-enum DT_PREINIT_ARRAYSZ = 33;
-//enum DT_MAXPOSTAGS = 34;
-enum DT_LOOS = 0x6000000d;
-enum DT_HIOS = 0x6ffff000;
-/*
-enum DT_SUNW_AUXILIARY = 0x6000000d;
-enum DT_SUNW_RTLDINF = 0x6000000e;
-enum DT_SUNW_FILTER = 0x6000000f;
-enum DT_SUNW_CAP = 0x60000010;
-*/
-
-enum DT_VALRNGLO = 0x6ffffd00;
-enum DT_GNU_PRELINKED = 0x6ffffdf5;
-enum DT_GNU_CONFLICTSZ =0x6ffffdf6;
-enum DT_GNU_LIBLISTSZ = 0x6ffffdf7;
-enum DT_CHECKSUM = 0x6ffffdf8;
-enum DT_PLTPADSZ = 0x6ffffdf9;
-enum DT_MOVEENT = 0x6ffffdfa;
-enum DT_MOVESZ = 0x6ffffdfb;
-enum DT_FEATURE_1 = 0x6ffffdfc;
-enum DT_POSFLAG_1 = 0x6ffffdfd;
-enum DT_SYMINSZ = 0x6ffffdfe;
-enum DT_SYMINENT = 0x6ffffdff;
-enum DT_VALRNGHI = 0x6ffffdff;
-enum DT_ADDRRNGLO = 0x6ffffe00;
-enum DT_GNU_HASH = 0x6ffffef5;
-enum DT_TLSDESC_PLT = 0x6ffffef6;
-enum DT_TLSDESC_GOT = 0x6ffffef7;
-enum DT_GNU_CONFLICT = 0x6ffffef8;
-enum DT_GNU_LIBLIST = 0x6ffffef9;
-enum DT_CONFIG = 0x6ffffefa;
-enum DT_DEPAUDIT = 0x6ffffefb;
-enum DT_AUDIT = 0x6ffffefc;
-enum DT_PLTPAD = 0x6ffffefd;
-enum DT_MOVETAB = 0x6ffffefe;
-enum DT_SYMINFO = 0x6ffffeff;
-enum DT_ADDRRNGHI = 0x6ffffeff;
-enum DT_RELACOUNT = 0x6ffffff9;
-enum DT_RELCOUNT = 0x6ffffffa;
-enum DT_FLAGS_1 = 0x6ffffffb;
-enum DT_VERDEF = 0x6ffffffc;
-enum DT_VERDEFNUM = 0x6ffffffd;
-enum DT_VERNEED = 0x6ffffffe;
-enum DT_VERNEEDNUM = 0x6fffffff;
-enum DT_VERSYM = 0x6ffffff0;
-enum DT_LOPROC = 0x70000000;
-//enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001;
-enum DT_AUXILIARY = 0x7ffffffd;
enum DT_USED = 0x7ffffffe;
-enum DT_FILTER = 0x7fffffff;
-enum DT_HIPROC = 0x7fffffff;
-
-enum DTF_1_PARINIT = 0x00000001;
-enum DTF_1_CONFEXP = 0x00000002;
-
-enum DF_P1_LAZYLOAD = 0x00000001;
-enum DF_P1_GROUPPERM= 0x00000002;
-enum DF_1_NOW = 0x00000001;
enum DF_1_BIND_NOW = 0x00000001;
-enum DF_1_GLOBAL = 0x00000002;
-enum DF_1_GROUP = 0x00000004;
-enum DF_1_NODELETE = 0x00000008;
-enum DF_1_LOADFLTR = 0x00000010;
-enum DF_1_INITFIRST = 0x00000020;
-enum DF_1_NOOPEN = 0x00000040;
-enum DF_1_ORIGIN = 0x00000080;
-enum DF_1_DIRECT = 0x00000100;
-enum DF_1_TRANS = 0x00000200;
-enum DF_1_INTERPOSE = 0x00000400;
-enum DF_1_NODEFLIB = 0x00000800;
-enum DF_1_NODUMP = 0x00001000;
-enum DF_1_CONLFAT = 0x00002000;
-enum DF_ORIGIN = 0x00000001;
-enum DF_SYMBOLIC = 0x00000002;
-enum DF_TEXTREL = 0x00000004;
-enum DF_BIND_NOW = 0x00000008;
-enum DF_STATIC_TLS = 0x00000010;
-
-enum VER_DEF_NONE = 0;
-enum VER_DEF_CURRENT = 1;
alias VER_NDX VER_DEF_IDX;
-enum VER_FLG_BASE = 0x1;
-enum VER_FLG_WEAK = 0x2;
enum VER_FLG_INFO = 0x4;
-enum VER_NDX_LOCAL = 0;
-enum VER_NDX_GLOBAL = 1;
enum VER_NDX_GIVEN = 2;
enum VER_NDX_HIDDEN = 32768;
+
extern (D) pure @safe
{
auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
}
-enum VER_NEED_NONE = 0;
-enum VER_NEED_CURRENT = 1;
enum VER_NEED_WEAK = 32768;
enum VER_NEED_HIDDEN = VER_NDX_HIDDEN;
alias VER_NDX VER_NEED_IDX;
-/*
-enum CA_SUNW_NULL = 0;
-enum CA_SUNW_HW_1 = 1;
-enum CA_SUNW_SF_1 = 2;
-*/
-
enum VERSYM_HIDDEN = 0x8000;
enum VERSYM_VERSION = 0x7fff;
enum ELF_VER_CHR = '@';
-
-enum SYMINFO_BT_SELF = 0xffff;
-enum SYMINFO_BT_PARENT = 0xfffe;
-//enum SYMINFO_BT_NONE = 0xfffd;
-//enum SYMINFO_BT_EXTERN = 0xfffc;
-enum SYMINFO_BT_LOWRESERVE = 0xff00;
-
-enum SYMINFO_FLG_DIRECT = 0x0001;
-enum SYMINFO_FLG_PASSTHRU = 0x0002;
-enum SYMINFO_FLG_COPY = 0x0004;
-enum SYMINFO_FLG_LAZYLOAD = 0x0008;
-//enum SYMINFO_FLG_DIRECTBIND = 0x0010;
-//enum SYMINFO_FLG_NOEXTDIRECT = 0x0020;
-//enum SYMINFO_FLG_FILTER = 0x0002;
-//enum SYMINFO_FLG_AUXILIARY = 0x0040;
-
-enum SYMINFO_NONE = 0;
-enum SYMINFO_CURRENT = 1;
-enum SYMINFO_NUM = 2;
-
-enum GRP_COMDAT = 0x1;
-
-enum R_386_NONE = 0;
-enum R_386_32 = 1;
-enum R_386_PC32 = 2;
-enum R_386_GOT32 = 3;
-enum R_386_PLT32 = 4;
-enum R_386_COPY = 5;
-enum R_386_GLOB_DAT = 6;
-enum R_386_JMP_SLOT = 7;
-enum R_386_RELATIVE = 8;
-enum R_386_GOTOFF = 9;
-enum R_386_GOTPC = 10;
-enum R_386_TLS_TPOFF = 14;
-enum R_386_TLS_IE = 15;
-enum R_386_TLS_GOTIE = 16;
-enum R_386_TLS_LE = 17;
-enum R_386_TLS_GD = 18;
-enum R_386_TLS_LDM = 19;
-enum R_386_TLS_GD_32 = 24;
-enum R_386_TLS_GD_PUSH = 25;
-enum R_386_TLS_GD_CALL = 26;
-enum R_386_TLS_GD_POP = 27;
-enum R_386_TLS_LDM_32 = 28;
-enum R_386_TLS_LDM_PUSH = 29;
-enum R_386_TLS_LDM_CALL = 30;
-enum R_386_TLS_LDM_POP = 31;
-enum R_386_TLS_LDO_32 = 32;
-enum R_386_TLS_IE_32 = 33;
-enum R_386_TLS_LE_32 = 34;
-enum R_386_TLS_DTPMOD32 = 35;
-enum R_386_TLS_DTPOFF32 = 36;
-enum R_386_TLS_TPOFF32 = 37;
-enum R_386_IRELATIVE = 42;
-
-enum R_X86_64_NONE = 0;
-enum R_X86_64_64 = 1;
-enum R_X86_64_PC32 = 2;
-enum R_X86_64_GOT32 = 3;
-enum R_X86_64_PLT32 = 4;
-enum R_X86_64_COPY = 5;
-enum R_X86_64_GLOB_DAT = 6;
-enum R_X86_64_JMP_SLOT = 7;
-enum R_X86_64_RELATIVE = 8;
-enum R_X86_64_GOTPCREL = 9;
-enum R_X86_64_32 = 10;
-enum R_X86_64_32S = 11;
-enum R_X86_64_16 = 12;
-enum R_X86_64_PC16 = 13;
-enum R_X86_64_8 = 14;
-enum R_X86_64_PC8 = 15;
-enum R_X86_64_DTPMOD64 = 16;
-enum R_X86_64_DTPOFF64 = 17;
-enum R_X86_64_TPOFF64 = 18;
-enum R_X86_64_TLSGD = 19;
-enum R_X86_64_TLSLD = 20;
-enum R_X86_64_DTPOFF32 = 21;
-enum R_X86_64_GOTTPOFF = 22;
-enum R_X86_64_TPOFF32 = 23;
-enum R_X86_64_IRELATIVE = 37;
diff --git a/libphobos/libdruntime/core/sys/elf/package.d b/libphobos/libdruntime/core/sys/elf/package.d
new file mode 100644
index 0000000..5de897a
--- /dev/null
+++ b/libphobos/libdruntime/core/sys/elf/package.d
@@ -0,0 +1,2532 @@
+/**
+ * D header file for standard ELF types, structures, and macros.
+ *
+ * $(LINK2 http://sourceware.org/git/?p=glibc.git;a=blob;f=elf/elf.h, glibc elf/elf.h)
+ */
+module core.sys.elf;
+
+extern (C):
+pure:
+nothrow:
+@system:
+
+import core.stdc.stdint;
+
+alias uint16_t Elf32_Half;
+alias uint16_t Elf64_Half;
+
+alias uint32_t Elf32_Word;
+alias int32_t Elf32_Sword;
+alias uint32_t Elf64_Word;
+alias int32_t Elf64_Sword;
+
+alias uint64_t Elf32_Xword;
+alias int64_t Elf32_Sxword;
+alias uint64_t Elf64_Xword;
+alias int64_t Elf64_Sxword;
+
+alias uint32_t Elf32_Addr;
+alias uint64_t Elf64_Addr;
+
+alias uint32_t Elf32_Off;
+alias uint64_t Elf64_Off;
+
+alias uint16_t Elf32_Section;
+alias uint16_t Elf64_Section;
+
+alias Elf32_Half Elf32_Versym;
+alias Elf64_Half Elf64_Versym;
+
+enum EI_NIDENT = 16;
+
+struct Elf32_Ehdr
+{
+ char[EI_NIDENT] e_ident = 0;
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry;
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+}
+
+struct Elf64_Ehdr
+{
+ char[EI_NIDENT] e_ident = 0;
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry;
+ Elf64_Off e_phoff;
+ Elf64_Off e_shoff;
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+}
+
+enum EI_MAG0 = 0;
+enum ELFMAG0 = 0x7f;
+
+enum EI_MAG1 = 1;
+enum ELFMAG1 = 'E';
+
+enum EI_MAG2 = 2;
+enum ELFMAG2 = 'L';
+
+enum EI_MAG3 = 3;
+enum ELFMAG3 = 'F';
+enum ELFMAG = "\177ELF";
+enum SELFMAG = 4;
+
+enum EI_CLASS = 4;
+enum ELFCLASSNONE = 0;
+enum ELFCLASS32 = 1;
+enum ELFCLASS64 = 2;
+enum ELFCLASSNUM = 3;
+
+enum EI_DATA = 5;
+enum ELFDATANONE = 0;
+enum ELFDATA2LSB = 1;
+enum ELFDATA2MSB = 2;
+enum ELFDATANUM = 3;
+
+enum EI_VERSION = 6;
+
+enum EI_OSABI = 7;
+enum ELFOSABI_NONE = 0;
+enum ELFOSABI_SYSV = 0;
+enum ELFOSABI_HPUX = 1;
+enum ELFOSABI_NETBSD = 2;
+enum ELFOSABI_GNU = 3;
+enum ELFOSABI_LINUX = ELFOSABI_GNU;
+enum ELFOSABI_HURD = 4;
+enum ELFOSABI_86OPEN = 5;
+enum ELFOSABI_SOLARIS = 6;
+enum ELFOSABI_AIX = 7;
+enum ELFOSABI_MONTEREY = 7;
+enum ELFOSABI_IRIX = 8;
+enum ELFOSABI_FREEBSD = 9;
+enum ELFOSABI_TRU64 = 10;
+enum ELFOSABI_MODESTO = 11;
+enum ELFOSABI_OPENBSD = 12;
+enum ELFOSABI_OPENVMS = 13;
+enum ELFOSABI_NSK = 14;
+enum ELFOSABI_AROS = 15;
+enum ELFOSABI_ARM_AEABI = 64;
+enum ELFOSABI_ARM = 97;
+enum ELFOSABI_STANDALONE = 255;
+enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
+
+enum EI_ABIVERSION = 8;
+
+enum EI_PAD = 9;
+
+enum ET_NONE = 0;
+enum ET_REL = 1;
+enum ET_EXEC = 2;
+enum ET_DYN = 3;
+enum ET_CORE = 4;
+enum ET_NUM = 5;
+enum ET_LOOS = 0xfe00;
+enum ET_HIOS = 0xfeff;
+enum ET_LOPROC = 0xff00;
+enum ET_HIPROC = 0xffff;
+
+enum EM_NONE = 0;
+enum EM_M32 = 1;
+enum EM_SPARC = 2;
+enum EM_386 = 3;
+enum EM_68K = 4;
+enum EM_88K = 5;
+enum EM_860 = 7;
+enum EM_MIPS = 8;
+enum EM_S370 = 9;
+enum EM_MIPS_RS3_LE = 10;
+
+enum EM_PARISC = 15;
+enum EM_VPP500 = 17;
+enum EM_SPARC32PLUS = 18;
+enum EM_960 = 19;
+enum EM_PPC = 20;
+enum EM_PPC64 = 21;
+enum EM_S390 = 22;
+
+enum EM_V800 = 36;
+enum EM_FR20 = 37;
+enum EM_RH32 = 38;
+enum EM_RCE = 39;
+enum EM_ARM = 40;
+enum EM_FAKE_ALPHA = 41;
+enum EM_SH = 42;
+enum EM_SPARCV9 = 43;
+enum EM_TRICORE = 44;
+enum EM_ARC = 45;
+enum EM_H8_300 = 46;
+enum EM_H8_300H = 47;
+enum EM_H8S = 48;
+enum EM_H8_500 = 49;
+enum EM_IA_64 = 50;
+enum EM_MIPS_X = 51;
+enum EM_COLDFIRE = 52;
+enum EM_68HC12 = 53;
+enum EM_MMA = 54;
+enum EM_PCP = 55;
+enum EM_NCPU = 56;
+enum EM_NDR1 = 57;
+enum EM_STARCORE = 58;
+enum EM_ME16 = 59;
+enum EM_ST100 = 60;
+enum EM_TINYJ = 61;
+enum EM_X86_64 = 62;
+enum EM_PDSP = 63;
+
+enum EM_FX66 = 66;
+enum EM_ST9PLUS = 67;
+enum EM_ST7 = 68;
+enum EM_68HC16 = 69;
+enum EM_68HC11 = 70;
+enum EM_68HC08 = 71;
+enum EM_68HC05 = 72;
+enum EM_SVX = 73;
+enum EM_ST19 = 74;
+enum EM_VAX = 75;
+enum EM_CRIS = 76;
+enum EM_JAVELIN = 77;
+enum EM_FIREPATH = 78;
+enum EM_ZSP = 79;
+enum EM_MMIX = 80;
+enum EM_HUANY = 81;
+enum EM_PRISM = 82;
+enum EM_AVR = 83;
+enum EM_FR30 = 84;
+enum EM_D10V = 85;
+enum EM_D30V = 86;
+enum EM_V850 = 87;
+enum EM_M32R = 88;
+enum EM_MN10300 = 89;
+enum EM_MN10200 = 90;
+enum EM_PJ = 91;
+enum EM_OPENRISC = 92;
+enum EM_ARC_A5 = 93;
+enum EM_XTENSA = 94;
+enum EM_VIDEOCORE = 95;
+enum EM_TMM_GPP = 96;
+enum EM_NS32K = 97;
+enum EM_TPC = 98;
+enum EM_SNP1K = 99;
+enum EM_ST200 = 100;
+enum EM_IP2K = 101;
+enum EM_MAX = 102;
+enum EM_CR = 103;
+enum EM_F2MC16 = 104;
+enum EM_MSP430 = 105;
+enum EM_BLACKFIN = 106;
+enum EM_SE_C33 = 107;
+enum EM_SEP = 108;
+enum EM_ARCA = 109;
+enum EM_UNICORE = 110;
+enum EM_DXP = 112;
+enum EM_ALTERA_NIOS2 = 113;
+enum EM_CRX = 114;
+enum EM_XGATE = 115;
+enum EM_C166 = 116;
+enum EM_M16C = 117;
+enum EM_DSPIC30F = 118;
+enum EM_CE = 119;
+enum EM_M32C = 120;
+enum EM_res121 = 121;
+enum EM_res122 = 122;
+enum EM_res123 = 123;
+enum EM_res124 = 124;
+enum EM_res125 = 125;
+enum EM_res126 = 126;
+enum EM_res127 = 127;
+enum EM_res128 = 128;
+enum EM_res129 = 129;
+enum EM_res130 = 130;
+enum EM_TSK3000 = 131;
+enum EM_RS08 = 132;
+enum EM_res133 = 133;
+enum EM_ECOG2 = 134;
+enum EM_SCORE = 135;
+enum EM_SCORE7 = 135;
+enum EM_DSP24 = 136;
+enum EM_VIDEOCORE3 = 137;
+enum EM_LATTICEMICO32 = 138;
+enum EM_SE_C17 = 139;
+enum EM_TI_C6000 = 140;
+enum EM_TI_C2000 = 141;
+enum EM_TI_C5500 = 142;
+enum EM_TI_ARP32 = 143;
+enum EM_TI_PRU = 144;
+enum EM_MMDSP_PLUS = 160;
+enum EM_CYPRESS_M8C = 161;
+enum EM_R32C = 162;
+enum EM_TRIMEDIA = 163;
+enum EM_QDSP6 = 164;
+enum EM_8051 = 165;
+enum EM_STXP7X = 166;
+enum EM_NDS32 = 167;
+enum EM_ECOG1 = 168;
+enum EM_ECOG1X = 168;
+enum EM_MAXQ30 = 169;
+enum EM_XIMO16 = 170;
+enum EM_MANIK = 171;
+enum EM_CRAYNV2 = 172;
+enum EM_RX = 173;
+enum EM_METAG = 174;
+enum EM_MCST_ELBRUS = 175;
+enum EM_ECOG16 = 176;
+enum EM_CR16 = 177;
+enum EM_ETPU = 178;
+enum EM_SLE9X = 179;
+enum EM_L1OM = 180;
+enum EM_K1OM = 181;
+enum EM_INTEL182 = 182;
+enum EM_AARCH64 = 183;
+enum EM_AVR32 = 185;
+enum EM_STM8 = 186;
+enum EM_TILE64 = 187;
+enum EM_TILEPRO = 188;
+enum EM_MICROBLAZE = 189;
+enum EM_CUDA = 190;
+enum EM_TILEGX = 191;
+enum EM_CLOUDSHIELD = 192;
+enum EM_COREA_1ST = 193;
+enum EM_COREA_2ND = 194;
+enum EM_ARCV2 = 195;
+enum EM_OPEN8 = 196;
+enum EM_RL78 = 197;
+enum EM_VIDEOCORE5 = 198;
+enum EM_78KOR = 199;
+enum EM_56800EX = 200;
+enum EM_BA1 = 201;
+enum EM_BA2 = 202;
+enum EM_XCORE = 203;
+enum EM_MCHP_PIC = 204;
+enum EM_INTELGT = 205;
+
+enum EM_KM32 = 210;
+enum EM_KMX32 = 211;
+enum EM_EMX16 = 212;
+enum EM_EMX8 = 213;
+enum EM_KVARC = 214;
+enum EM_CDP = 215;
+enum EM_COGE = 216;
+enum EM_COOL = 217;
+enum EM_NORC = 218;
+enum EM_CSR_KALIMBA = 219;
+enum EM_Z80 = 220;
+enum EM_VISIUM = 221;
+enum EM_FT32 = 222;
+enum EM_MOXIE = 223;
+enum EM_AMDGPU = 224;
+
+enum EM_RISCV = 243;
+
+enum EM_BPF = 247;
+enum EM_CSKY = 252;
+
+enum EM_NUM = 253;
+
+enum EM_ALPHA = 0x9026;
+
+enum EV_NONE = 0;
+enum EV_CURRENT = 1;
+enum EV_NUM = 2;
+
+struct Elf32_Shdr
+{
+ Elf32_Word sh_name;
+ Elf32_Word sh_type;
+ Elf32_Word sh_flags;
+ Elf32_Addr sh_addr;
+ Elf32_Off sh_offset;
+ Elf32_Word sh_size;
+ Elf32_Word sh_link;
+ Elf32_Word sh_info;
+ Elf32_Word sh_addralign;
+ Elf32_Word sh_entsize;
+}
+
+struct Elf64_Shdr
+{
+ Elf64_Word sh_name;
+ Elf64_Word sh_type;
+ Elf64_Xword sh_flags;
+ Elf64_Addr sh_addr;
+ Elf64_Off sh_offset;
+ Elf64_Xword sh_size;
+ Elf64_Word sh_link;
+ Elf64_Word sh_info;
+ Elf64_Xword sh_addralign;
+ Elf64_Xword sh_entsize;
+}
+
+enum SHN_UNDEF = 0;
+enum SHN_LORESERVE = 0xff00;
+enum SHN_LOPROC = 0xff00;
+enum SHN_BEFORE = 0xff00;
+enum SHN_AFTER = 0xff01;
+enum SHN_HIPROC = 0xff1f;
+enum SHN_LOOS = 0xff20;
+enum SHN_HIOS = 0xff3f;
+enum SHN_ABS = 0xfff1;
+enum SHN_COMMON = 0xfff2;
+enum SHN_XINDEX = 0xffff;
+enum SHN_HIRESERVE = 0xffff;
+
+enum SHT_NULL = 0;
+enum SHT_PROGBITS = 1;
+enum SHT_SYMTAB = 2;
+enum SHT_STRTAB = 3;
+enum SHT_RELA = 4;
+enum SHT_HASH = 5;
+enum SHT_DYNAMIC = 6;
+enum SHT_NOTE = 7;
+enum SHT_NOBITS = 8;
+enum SHT_REL = 9;
+enum SHT_SHLIB = 10;
+enum SHT_DYNSYM = 11;
+enum SHT_INIT_ARRAY = 14;
+enum SHT_FINI_ARRAY = 15;
+enum SHT_PREINIT_ARRAY = 16;
+enum SHT_GROUP = 17;
+enum SHT_SYMTAB_SHNDX = 18;
+enum SHT_NUM = 19;
+enum SHT_LOOS = 0x60000000;
+enum SHT_GNU_ATTRIBUTES = 0x6ffffff5;
+enum SHT_GNU_HASH = 0x6ffffff6;
+enum SHT_GNU_LIBLIST = 0x6ffffff7;
+enum SHT_CHECKSUM = 0x6ffffff8;
+enum SHT_LOSUNW = 0x6ffffffa;
+enum SHT_SUNW_move = 0x6ffffffa;
+enum SHT_SUNW_COMDAT = 0x6ffffffb;
+enum SHT_SUNW_syminfo = 0x6ffffffc;
+enum SHT_GNU_verdef = 0x6ffffffd;
+enum SHT_GNU_verneed = 0x6ffffffe;
+enum SHT_GNU_versym = 0x6fffffff;
+enum SHT_HISUNW = 0x6fffffff;
+enum SHT_HIOS = 0x6fffffff;
+enum SHT_LOPROC = 0x70000000;
+enum SHT_HIPROC = 0x7fffffff;
+enum SHT_LOUSER = 0x80000000;
+enum SHT_HIUSER = 0x8fffffff;
+
+enum SHF_WRITE = (1 << 0);
+enum SHF_ALLOC = (1 << 1);
+enum SHF_EXECINSTR = (1 << 2);
+enum SHF_MERGE = (1 << 4);
+enum SHF_STRINGS = (1 << 5);
+enum SHF_INFO_LINK = (1 << 6);
+enum SHF_LINK_ORDER = (1 << 7);
+enum SHF_OS_NONCONFORMING = (1 << 8);
+enum SHF_GROUP = (1 << 9);
+enum SHF_TLS = (1 << 10);
+enum SHF_COMPRESSED = (1 << 11);
+enum SHF_MASKOS = 0x0ff00000;
+enum SHF_MASKPROC = 0xf0000000;
+enum SHF_ORDERED = (1 << 30);
+enum SHF_EXCLUDE = (1 << 31);
+enum GRP_COMDAT = 0x1;
+
+struct Elf32_Sym
+{
+ Elf32_Word st_name;
+ Elf32_Addr st_value;
+ Elf32_Word st_size;
+ ubyte st_info;
+ ubyte st_other;
+ Elf32_Section st_shndx;
+}
+
+struct Elf64_Sym
+{
+ Elf64_Word st_name;
+ ubyte st_info;
+ ubyte st_other;
+ Elf64_Section st_shndx;
+ Elf64_Addr st_value;
+ Elf64_Xword st_size;
+}
+
+struct Elf32_Syminfo
+{
+ Elf32_Half si_boundto;
+ Elf32_Half si_flags;
+}
+
+struct Elf64_Syminfo
+{
+ Elf64_Half si_boundto;
+ Elf64_Half si_flags;
+}
+
+enum SYMINFO_BT_SELF = 0xffff;
+enum SYMINFO_BT_PARENT = 0xfffe;
+enum SYMINFO_BT_LOWRESERVE = 0xff00;
+
+enum SYMINFO_FLG_DIRECT = 0x0001;
+enum SYMINFO_FLG_PASSTHRU = 0x0002;
+enum SYMINFO_FLG_COPY = 0x0004;
+enum SYMINFO_FLG_LAZYLOAD = 0x0008;
+
+enum SYMINFO_NONE = 0;
+enum SYMINFO_CURRENT = 1;
+enum SYMINFO_NUM = 2;
+
+extern (D)
+{
+ auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
+ auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
+ auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
+ alias ELF32_ST_BIND ELF64_ST_BIND;
+ alias ELF32_ST_TYPE ELF64_ST_TYPE;
+ alias ELF32_ST_INFO ELF64_ST_INFO;
+}
+
+enum STB_LOCAL = 0;
+enum STB_GLOBAL = 1;
+enum STB_WEAK = 2;
+enum STB_NUM = 3;
+enum STB_LOOS = 10;
+enum STB_GNU_UNIQUE = 10;
+enum STB_HIOS = 12;
+enum STB_LOPROC = 13;
+enum STB_HIPROC = 15;
+
+enum STT_NOTYPE = 0;
+enum STT_OBJECT = 1;
+enum STT_FUNC = 2;
+enum STT_SECTION = 3;
+enum STT_FILE = 4;
+enum STT_COMMON = 5;
+enum STT_TLS = 6;
+enum STT_NUM = 7;
+enum STT_LOOS = 10;
+enum STT_GNU_IFUNC = 10;
+enum STT_HIOS = 12;
+enum STT_LOPROC = 13;
+enum STT_HIPROC = 15;
+
+enum STN_UNDEF = 0;
+
+enum STV_DEFAULT = 0;
+enum STV_INTERNAL = 1;
+enum STV_HIDDEN = 2;
+enum STV_PROTECTED = 3;
+
+struct Elf32_Rel
+{
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+}
+
+struct Elf64_Rel
+{
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+}
+
+struct Elf32_Rela
+{
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+ Elf32_Sword r_addend;
+}
+
+struct Elf64_Rela
+{
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+ Elf64_Sxword r_addend;
+}
+
+extern (D)
+{
+ auto ELF32_R_SYM(V)(V val) { return val >> 8; }
+ auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
+ auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
+
+ auto ELF64_R_SYM(I)(I i) { return i >> 32; }
+ auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
+ auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type); }
+}
+
+struct Elf32_Phdr
+{
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+}
+
+struct Elf64_Phdr
+{
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset;
+ Elf64_Addr p_vaddr;
+ Elf64_Addr p_paddr;
+ Elf64_Xword p_filesz;
+ Elf64_Xword p_memsz;
+ Elf64_Xword p_align;
+}
+
+enum PN_XNUM = 0xffff;
+
+enum PT_NULL = 0;
+enum PT_LOAD = 1;
+enum PT_DYNAMIC = 2;
+enum PT_INTERP = 3;
+enum PT_NOTE = 4;
+enum PT_SHLIB = 5;
+enum PT_PHDR = 6;
+enum PT_TLS = 7;
+enum PT_NUM = 8;
+enum PT_LOOS = 0x60000000;
+enum PT_GNU_EH_FRAME = 0x6474e550;
+enum PT_GNU_STACK = 0x6474e551;
+enum PT_GNU_RELRO = 0x6474e552;
+enum PT_LOSUNW = 0x6ffffffa;
+enum PT_SUNWBSS = 0x6ffffffa;
+enum PT_SUNWSTACK = 0x6ffffffb;
+enum PT_HISUNW = 0x6fffffff;
+enum PT_HIOS = 0x6fffffff;
+enum PT_LOPROC = 0x70000000;
+enum PT_HIPROC = 0x7fffffff;
+
+enum PF_X = (1 << 0);
+enum PF_W = (1 << 1);
+enum PF_R = (1 << 2);
+enum PF_MASKOS = 0x0ff00000;
+enum PF_MASKPROC = 0xf0000000;
+
+struct Elf32_Dyn
+{
+ Elf32_Sword d_tag;
+ union _d_un
+ {
+ Elf32_Word d_val;
+ Elf32_Addr d_ptr;
+ } _d_un d_un;
+}
+
+struct Elf64_Dyn
+{
+ Elf64_Sxword 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;
+enum DT_RELAENT = 9;
+enum DT_STRSZ = 10;
+enum DT_SYMENT = 11;
+enum DT_INIT = 12;
+enum DT_FINI = 13;
+enum DT_SONAME = 14;
+enum DT_RPATH = 15;
+enum DT_SYMBOLIC = 16;
+enum DT_REL = 17;
+enum DT_RELSZ = 18;
+enum DT_RELENT = 19;
+enum DT_PLTREL = 20;
+enum DT_DEBUG = 21;
+enum DT_TEXTREL = 22;
+enum DT_JMPREL = 23;
+enum DT_BIND_NOW = 24;
+enum DT_INIT_ARRAY = 25;
+enum DT_FINI_ARRAY = 26;
+enum DT_INIT_ARRAYSZ = 27;
+enum DT_FINI_ARRAYSZ = 28;
+enum DT_RUNPATH = 29;
+enum DT_FLAGS = 30;
+enum DT_ENCODING = 32;
+enum DT_PREINIT_ARRAY = 32;
+enum DT_PREINIT_ARRAYSZ = 33;
+enum DT_NUM = 34;
+enum DT_LOOS = 0x6000000d;
+enum DT_HIOS = 0x6ffff000;
+enum DT_LOPROC = 0x70000000;
+enum DT_HIPROC = 0x7fffffff;
+enum DT_PROCNUM = DT_MIPS_NUM;
+enum DT_VALRNGLO = 0x6ffffd00;
+enum DT_GNU_PRELINKED = 0x6ffffdf5;
+enum DT_GNU_CONFLICTSZ = 0x6ffffdf6;
+enum DT_GNU_LIBLISTSZ = 0x6ffffdf7;
+enum DT_CHECKSUM = 0x6ffffdf8;
+enum DT_PLTPADSZ = 0x6ffffdf9;
+enum DT_MOVEENT = 0x6ffffdfa;
+enum DT_MOVESZ = 0x6ffffdfb;
+enum DT_FEATURE_1 = 0x6ffffdfc;
+enum DT_POSFLAG_1 = 0x6ffffdfd;
+enum DT_SYMINSZ = 0x6ffffdfe;
+enum DT_SYMINENT = 0x6ffffdff;
+enum DT_VALRNGHI = 0x6ffffdff;
+extern (D) auto DT_VALTAGIDX(T)(T tag)
+{
+ return DT_VALRNGHI - tag;
+}
+enum DT_VALNUM = 12;
+enum DT_ADDRRNGLO = 0x6ffffe00;
+enum DT_GNU_HASH = 0x6ffffef5;
+enum DT_TLSDESC_PLT = 0x6ffffef6;
+enum DT_TLSDESC_GOT = 0x6ffffef7;
+enum DT_GNU_CONFLICT = 0x6ffffef8;
+enum DT_GNU_LIBLIST = 0x6ffffef9;
+enum DT_CONFIG = 0x6ffffefa;
+enum DT_DEPAUDIT = 0x6ffffefb;
+enum DT_AUDIT = 0x6ffffefc;
+enum DT_PLTPAD = 0x6ffffefd;
+enum DT_MOVETAB = 0x6ffffefe;
+enum DT_SYMINFO = 0x6ffffeff;
+enum DT_ADDRRNGHI = 0x6ffffeff;
+extern (D) auto DT_ADDRTAGIDX(T)(T tag)
+{
+ return DT_ADDRRNGHI - tag;
+}
+enum DT_ADDRNUM = 11;
+enum DT_VERSYM = 0x6ffffff0;
+
+enum DT_RELACOUNT = 0x6ffffff9;
+enum DT_RELCOUNT = 0x6ffffffa;
+enum DT_FLAGS_1 = 0x6ffffffb;
+enum DT_VERDEF = 0x6ffffffc;
+enum DT_VERDEFNUM = 0x6ffffffd;
+enum DT_VERNEED = 0x6ffffffe;
+enum DT_VERNEEDNUM = 0x6fffffff;
+extern (D) auto DT_VERSIONTAGIDX(T)(T tag)
+{
+ return DT_VERNEEDNUM - tag;
+}
+enum DT_VERSIONTAGNUM = 16;
+enum DT_AUXILIARY = 0x7ffffffd;
+enum DT_FILTER = 0x7fffffff;
+extern (D) auto DT_EXTRATAGIDX(T)(T tag)
+{
+ return cast(Elf32_Word)(-(cast(Elf32_Sword)(tag) <<1>>1)-1);
+}
+enum DT_EXTRANUM = 3;
+enum DF_ORIGIN = 0x00000001;
+enum DF_SYMBOLIC = 0x00000002;
+enum DF_TEXTREL = 0x00000004;
+enum DF_BIND_NOW = 0x00000008;
+enum DF_STATIC_TLS = 0x00000010;
+enum DF_1_NOW = 0x00000001;
+enum DF_1_GLOBAL = 0x00000002;
+enum DF_1_GROUP = 0x00000004;
+enum DF_1_NODELETE = 0x00000008;
+enum DF_1_LOADFLTR = 0x00000010;
+enum DF_1_INITFIRST = 0x00000020;
+enum DF_1_NOOPEN = 0x00000040;
+enum DF_1_ORIGIN = 0x00000080;
+enum DF_1_DIRECT = 0x00000100;
+enum DF_1_TRANS = 0x00000200;
+enum DF_1_INTERPOSE = 0x00000400;
+enum DF_1_NODEFLIB = 0x00000800;
+enum DF_1_NODUMP = 0x00001000;
+enum DF_1_CONFALT = 0x00002000;
+enum DF_1_ENDFILTEE = 0x00004000;
+enum DF_1_DISPRELDNE = 0x00008000;
+enum DF_1_DISPRELPND = 0x00010000;
+enum DF_1_NODIRECT = 0x00020000;
+enum DF_1_IGNMULDEF = 0x00040000;
+enum DF_1_NOKSYMS = 0x00080000;
+enum DF_1_NOHDR = 0x00100000;
+enum DF_1_EDITED = 0x00200000;
+enum DF_1_NORELOC = 0x00400000;
+enum DF_1_SYMINTPOSE = 0x00800000;
+enum DF_1_GLOBAUDIT = 0x01000000;
+enum DF_1_SINGLETON = 0x02000000;
+enum DTF_1_PARINIT = 0x00000001;
+enum DTF_1_CONFEXP = 0x00000002;
+enum DF_P1_LAZYLOAD = 0x00000001;
+enum DF_P1_GROUPPERM = 0x00000002;
+
+struct Elf32_Verdef
+{
+ Elf32_Half vd_version;
+ Elf32_Half vd_flags;
+ Elf32_Half vd_ndx;
+ Elf32_Half vd_cnt;
+ Elf32_Word vd_hash;
+ Elf32_Word vd_aux;
+ Elf32_Word vd_next;
+}
+
+struct Elf64_Verdef
+{
+ Elf64_Half vd_version;
+ Elf64_Half vd_flags;
+ Elf64_Half vd_ndx;
+ Elf64_Half vd_cnt;
+ Elf64_Word vd_hash;
+ Elf64_Word vd_aux;
+ Elf64_Word vd_next;
+}
+enum VER_DEF_NONE = 0;
+enum VER_DEF_CURRENT = 1;
+enum VER_DEF_NUM = 2;
+enum VER_FLG_BASE = 0x1;
+enum VER_FLG_WEAK = 0x2;
+enum VER_NDX_LOCAL = 0;
+enum VER_NDX_GLOBAL = 1;
+enum VER_NDX_LORESERVE = 0xff00;
+enum VER_NDX_ELIMINATE = 0xff01;
+
+struct Elf32_Verdaux
+{
+ Elf32_Word vda_name;
+ Elf32_Word vda_next;
+}
+
+struct Elf64_Verdaux
+{
+ Elf64_Word vda_name;
+ Elf64_Word vda_next;
+}
+
+struct Elf32_Verneed
+{
+ Elf32_Half vn_version;
+ Elf32_Half vn_cnt;
+ Elf32_Word vn_file;
+ Elf32_Word vn_aux;
+ Elf32_Word vn_next;
+}
+
+struct Elf64_Verneed
+{
+ Elf64_Half vn_version;
+ Elf64_Half vn_cnt;
+ Elf64_Word vn_file;
+ Elf64_Word vn_aux;
+ Elf64_Word vn_next;
+}
+enum VER_NEED_NONE = 0;
+enum VER_NEED_CURRENT = 1;
+enum VER_NEED_NUM = 2;
+
+struct Elf32_Vernaux
+{
+ Elf32_Word vna_hash;
+ Elf32_Half vna_flags;
+ Elf32_Half vna_other;
+ Elf32_Word vna_name;
+ Elf32_Word vna_next;
+}
+
+struct Elf64_Vernaux
+{
+ Elf64_Word vna_hash;
+ Elf64_Half vna_flags;
+ Elf64_Half vna_other;
+ Elf64_Word vna_name;
+ Elf64_Word vna_next;
+}
+
+enum ELF_NOTE_SOLARIS = "SUNW Solaris";
+enum ELF_NOTE_GNU = "GNU";
+enum ELF_NOTE_PAGESIZE_HINT = 1;
+enum ELF_NOTE_ABI = 1;
+enum ELF_NOTE_OS_LINUX = 0;
+enum ELF_NOTE_OS_GNU = 1;
+enum ELF_NOTE_OS_SOLARIS2 = 2;
+enum ELF_NOTE_OS_FREEBSD = 3;
+
+struct Elf32_Move
+{
+ Elf32_Xword m_value;
+ Elf32_Word m_info;
+ Elf32_Word m_poffset;
+ Elf32_Half m_repeat;
+ Elf32_Half m_stride;
+}
+
+struct Elf64_Move
+{
+ Elf64_Xword m_value;
+ Elf64_Xword m_info;
+ Elf64_Xword m_poffset;
+ Elf64_Half m_repeat;
+ Elf64_Half m_stride;
+}
+extern (D)
+{
+ auto ELF32_M_SYM(I)(I info) { return info >> 8; }
+ auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
+ auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
+}
+
+alias ELF32_M_SYM ELF64_M_SYM;
+alias ELF32_M_SIZE ELF64_M_SIZE;
+alias ELF32_M_INFO ELF64_M_INFO;
+enum EF_CPU32 = 0x00810000;
+
+enum R_68K_NONE = 0;
+enum R_68K_32 = 1;
+enum R_68K_16 = 2;
+enum R_68K_8 = 3;
+enum R_68K_PC32 = 4;
+enum R_68K_PC16 = 5;
+enum R_68K_PC8 = 6;
+enum R_68K_GOT32 = 7;
+enum R_68K_GOT16 = 8;
+enum R_68K_GOT8 = 9;
+enum R_68K_GOT32O = 10;
+enum R_68K_GOT16O = 11;
+enum R_68K_GOT8O = 12;
+enum R_68K_PLT32 = 13;
+enum R_68K_PLT16 = 14;
+enum R_68K_PLT8 = 15;
+enum R_68K_PLT32O = 16;
+enum R_68K_PLT16O = 17;
+enum R_68K_PLT8O = 18;
+enum R_68K_COPY = 19;
+enum R_68K_GLOB_DAT = 20;
+enum R_68K_JMP_SLOT = 21;
+enum R_68K_RELATIVE = 22;
+enum R_68K_TLS_GD32 = 25;
+enum R_68K_TLS_GD16 = 26;
+enum R_68K_TLS_GD8 = 27;
+enum R_68K_TLS_LDM32 = 28;
+enum R_68K_TLS_LDM16 = 29;
+enum R_68K_TLS_LDM8 = 30;
+enum R_68K_TLS_LDO32 = 31;
+enum R_68K_TLS_LDO16 = 32;
+enum R_68K_TLS_LDO8 = 33;
+enum R_68K_TLS_IE32 = 34;
+enum R_68K_TLS_IE16 = 35;
+enum R_68K_TLS_IE8 = 36;
+enum R_68K_TLS_LE32 = 37;
+enum R_68K_TLS_LE16 = 38;
+enum R_68K_TLS_LE8 = 39;
+enum R_68K_TLS_DTPMOD32 = 40;
+enum R_68K_TLS_DTPREL32 = 41;
+enum R_68K_TLS_TPREL32 = 42;
+enum R_68K_NUM = 43;
+
+enum R_386_NONE = 0;
+enum R_386_32 = 1;
+enum R_386_PC32 = 2;
+enum R_386_GOT32 = 3;
+enum R_386_PLT32 = 4;
+enum R_386_COPY = 5;
+enum R_386_GLOB_DAT = 6;
+enum R_386_JMP_SLOT = 7;
+enum R_386_RELATIVE = 8;
+enum R_386_GOTOFF = 9;
+enum R_386_GOTPC = 10;
+enum R_386_32PLT = 11;
+enum R_386_TLS_TPOFF = 14;
+enum R_386_TLS_IE = 15;
+enum R_386_TLS_GOTIE = 16;
+enum R_386_TLS_LE = 17;
+enum R_386_TLS_GD = 18;
+enum R_386_TLS_LDM = 19;
+enum R_386_16 = 20;
+enum R_386_PC16 = 21;
+enum R_386_8 = 22;
+enum R_386_PC8 = 23;
+enum R_386_TLS_GD_32 = 24;
+enum R_386_TLS_GD_PUSH = 25;
+enum R_386_TLS_GD_CALL = 26;
+enum R_386_TLS_GD_POP = 27;
+enum R_386_TLS_LDM_32 = 28;
+enum R_386_TLS_LDM_PUSH = 29;
+enum R_386_TLS_LDM_CALL = 30;
+enum R_386_TLS_LDM_POP = 31;
+enum R_386_TLS_LDO_32 = 32;
+enum R_386_TLS_IE_32 = 33;
+enum R_386_TLS_LE_32 = 34;
+enum R_386_TLS_DTPMOD32 = 35;
+enum R_386_TLS_DTPOFF32 = 36;
+enum R_386_TLS_TPOFF32 = 37;
+enum R_386_SIZE32 = 38;
+enum R_386_TLS_GOTDESC = 39;
+enum R_386_TLS_DESC_CALL = 40;
+enum R_386_TLS_DESC = 41;
+enum R_386_IRELATIVE = 42;
+enum R_386_NUM = 43;
+
+enum STT_SPARC_REGISTER = 13;
+
+enum EF_SPARCV9_MM = 3;
+enum EF_SPARCV9_TSO = 0;
+enum EF_SPARCV9_PSO = 1;
+enum EF_SPARCV9_RMO = 2;
+enum EF_SPARC_LEDATA = 0x800000;
+enum EF_SPARC_EXT_MASK = 0xFFFF00;
+enum EF_SPARC_32PLUS = 0x000100;
+enum EF_SPARC_SUN_US1 = 0x000200;
+enum EF_SPARC_HAL_R1 = 0x000400;
+enum EF_SPARC_SUN_US3 = 0x000800;
+
+enum R_SPARC_NONE = 0;
+enum R_SPARC_8 = 1;
+enum R_SPARC_16 = 2;
+enum R_SPARC_32 = 3;
+enum R_SPARC_DISP8 = 4;
+enum R_SPARC_DISP16 = 5;
+enum R_SPARC_DISP32 = 6;
+enum R_SPARC_WDISP30 = 7;
+enum R_SPARC_WDISP22 = 8;
+enum R_SPARC_HI22 = 9;
+enum R_SPARC_22 = 10;
+enum R_SPARC_13 = 11;
+enum R_SPARC_LO10 = 12;
+enum R_SPARC_GOT10 = 13;
+enum R_SPARC_GOT13 = 14;
+enum R_SPARC_GOT22 = 15;
+enum R_SPARC_PC10 = 16;
+enum R_SPARC_PC22 = 17;
+enum R_SPARC_WPLT30 = 18;
+enum R_SPARC_COPY = 19;
+enum R_SPARC_GLOB_DAT = 20;
+enum R_SPARC_JMP_SLOT = 21;
+enum R_SPARC_RELATIVE = 22;
+enum R_SPARC_UA32 = 23;
+
+enum R_SPARC_PLT32 = 24;
+enum R_SPARC_HIPLT22 = 25;
+enum R_SPARC_LOPLT10 = 26;
+enum R_SPARC_PCPLT32 = 27;
+enum R_SPARC_PCPLT22 = 28;
+enum R_SPARC_PCPLT10 = 29;
+enum R_SPARC_10 = 30;
+enum R_SPARC_11 = 31;
+enum R_SPARC_64 = 32;
+enum R_SPARC_OLO10 = 33;
+enum R_SPARC_HH22 = 34;
+enum R_SPARC_HM10 = 35;
+enum R_SPARC_LM22 = 36;
+enum R_SPARC_PC_HH22 = 37;
+enum R_SPARC_PC_HM10 = 38;
+enum R_SPARC_PC_LM22 = 39;
+enum R_SPARC_WDISP16 = 40;
+enum R_SPARC_WDISP19 = 41;
+enum R_SPARC_GLOB_JMP = 42;
+enum R_SPARC_7 = 43;
+enum R_SPARC_5 = 44;
+enum R_SPARC_6 = 45;
+enum R_SPARC_DISP64 = 46;
+enum R_SPARC_PLT64 = 47;
+enum R_SPARC_HIX22 = 48;
+enum R_SPARC_LOX10 = 49;
+enum R_SPARC_H44 = 50;
+enum R_SPARC_M44 = 51;
+enum R_SPARC_L44 = 52;
+enum R_SPARC_REGISTER = 53;
+enum R_SPARC_UA64 = 54;
+enum R_SPARC_UA16 = 55;
+enum R_SPARC_TLS_GD_HI22 = 56;
+enum R_SPARC_TLS_GD_LO10 = 57;
+enum R_SPARC_TLS_GD_ADD = 58;
+enum R_SPARC_TLS_GD_CALL = 59;
+enum R_SPARC_TLS_LDM_HI22 = 60;
+enum R_SPARC_TLS_LDM_LO10 = 61;
+enum R_SPARC_TLS_LDM_ADD = 62;
+enum R_SPARC_TLS_LDM_CALL = 63;
+enum R_SPARC_TLS_LDO_HIX22 = 64;
+enum R_SPARC_TLS_LDO_LOX10 = 65;
+enum R_SPARC_TLS_LDO_ADD = 66;
+enum R_SPARC_TLS_IE_HI22 = 67;
+enum R_SPARC_TLS_IE_LO10 = 68;
+enum R_SPARC_TLS_IE_LD = 69;
+enum R_SPARC_TLS_IE_LDX = 70;
+enum R_SPARC_TLS_IE_ADD = 71;
+enum R_SPARC_TLS_LE_HIX22 = 72;
+enum R_SPARC_TLS_LE_LOX10 = 73;
+enum R_SPARC_TLS_DTPMOD32 = 74;
+enum R_SPARC_TLS_DTPMOD64 = 75;
+enum R_SPARC_TLS_DTPOFF32 = 76;
+enum R_SPARC_TLS_DTPOFF64 = 77;
+enum R_SPARC_TLS_TPOFF32 = 78;
+enum R_SPARC_TLS_TPOFF64 = 79;
+enum R_SPARC_GOTDATA_HIX22 = 80;
+enum R_SPARC_GOTDATA_LOX10 = 81;
+enum R_SPARC_GOTDATA_OP_HIX22 = 82;
+enum R_SPARC_GOTDATA_OP_LOX10 = 83;
+enum R_SPARC_GOTDATA_OP = 84;
+enum R_SPARC_H34 = 85;
+enum R_SPARC_SIZE32 = 86;
+enum R_SPARC_SIZE64 = 87;
+enum R_SPARC_WDISP10 = 88;
+enum R_SPARC_JMP_IREL = 248;
+enum R_SPARC_IRELATIVE = 249;
+enum R_SPARC_GNU_VTINHERIT = 250;
+enum R_SPARC_GNU_VTENTRY = 251;
+enum R_SPARC_REV32 = 252;
+enum R_SPARC_NUM = 253;
+
+enum DT_SPARC_REGISTER = 0x70000001;
+enum DT_SPARC_NUM = 2;
+
+enum EF_MIPS_NOREORDER = 1;
+enum EF_MIPS_PIC = 2;
+enum EF_MIPS_CPIC = 4;
+enum EF_MIPS_XGOT = 8;
+enum EF_MIPS_64BIT_WHIRL = 16;
+enum EF_MIPS_ABI2 = 32;
+enum EF_MIPS_ABI_ON32 = 64;
+enum EF_MIPS_ARCH = 0xf0000000;
+
+enum EF_MIPS_ARCH_1 = 0x00000000;
+enum EF_MIPS_ARCH_2 = 0x10000000;
+enum EF_MIPS_ARCH_3 = 0x20000000;
+enum EF_MIPS_ARCH_4 = 0x30000000;
+enum EF_MIPS_ARCH_5 = 0x40000000;
+enum EF_MIPS_ARCH_32 = 0x50000000;
+enum EF_MIPS_ARCH_64 = 0x60000000;
+enum EF_MIPS_ARCH_32R2 = 0x70000000;
+enum EF_MIPS_ARCH_64R2 = 0x80000000;
+
+enum E_MIPS_ARCH_1 = EF_MIPS_ARCH_1;
+enum E_MIPS_ARCH_2 = EF_MIPS_ARCH_2;
+enum E_MIPS_ARCH_3 = EF_MIPS_ARCH_3;
+enum E_MIPS_ARCH_4 = EF_MIPS_ARCH_4;
+enum E_MIPS_ARCH_5 = EF_MIPS_ARCH_5;
+enum E_MIPS_ARCH_32 = EF_MIPS_ARCH_32;
+enum E_MIPS_ARCH_64 = EF_MIPS_ARCH_64;
+
+enum SHN_MIPS_ACOMMON = 0xff00;
+enum SHN_MIPS_TEXT = 0xff01;
+enum SHN_MIPS_DATA = 0xff02;
+enum SHN_MIPS_SCOMMON = 0xff03;
+enum SHN_MIPS_SUNDEFINED = 0xff04;
+
+enum SHT_MIPS_LIBLIST = 0x70000000;
+enum SHT_MIPS_MSYM = 0x70000001;
+enum SHT_MIPS_CONFLICT = 0x70000002;
+enum SHT_MIPS_GPTAB = 0x70000003;
+enum SHT_MIPS_UCODE = 0x70000004;
+enum SHT_MIPS_DEBUG = 0x70000005;
+enum SHT_MIPS_REGINFO = 0x70000006;
+enum SHT_MIPS_PACKAGE = 0x70000007;
+enum SHT_MIPS_PACKSYM = 0x70000008;
+enum SHT_MIPS_RELD = 0x70000009;
+enum SHT_MIPS_IFACE = 0x7000000b;
+enum SHT_MIPS_CONTENT = 0x7000000c;
+enum SHT_MIPS_OPTIONS = 0x7000000d;
+enum SHT_MIPS_SHDR = 0x70000010;
+enum SHT_MIPS_FDESC = 0x70000011;
+enum SHT_MIPS_EXTSYM = 0x70000012;
+enum SHT_MIPS_DENSE = 0x70000013;
+enum SHT_MIPS_PDESC = 0x70000014;
+enum SHT_MIPS_LOCSYM = 0x70000015;
+enum SHT_MIPS_AUXSYM = 0x70000016;
+enum SHT_MIPS_OPTSYM = 0x70000017;
+enum SHT_MIPS_LOCSTR = 0x70000018;
+enum SHT_MIPS_LINE = 0x70000019;
+enum SHT_MIPS_RFDESC = 0x7000001a;
+enum SHT_MIPS_DELTASYM = 0x7000001b;
+enum SHT_MIPS_DELTAINST = 0x7000001c;
+enum SHT_MIPS_DELTACLASS = 0x7000001d;
+enum SHT_MIPS_DWARF = 0x7000001e;
+enum SHT_MIPS_DELTADECL = 0x7000001f;
+enum SHT_MIPS_SYMBOL_LIB = 0x70000020;
+enum SHT_MIPS_EVENTS = 0x70000021;
+enum SHT_MIPS_TRANSLATE = 0x70000022;
+enum SHT_MIPS_PIXIE = 0x70000023;
+enum SHT_MIPS_XLATE = 0x70000024;
+enum SHT_MIPS_XLATE_DEBUG = 0x70000025;
+enum SHT_MIPS_WHIRL = 0x70000026;
+enum SHT_MIPS_EH_REGION = 0x70000027;
+enum SHT_MIPS_XLATE_OLD = 0x70000028;
+enum SHT_MIPS_PDR_EXCEPTION = 0x70000029;
+
+enum SHF_MIPS_GPREL = 0x10000000;
+enum SHF_MIPS_MERGE = 0x20000000;
+enum SHF_MIPS_ADDR = 0x40000000;
+enum SHF_MIPS_STRINGS = 0x80000000;
+enum SHF_MIPS_NOSTRIP = 0x08000000;
+enum SHF_MIPS_LOCAL = 0x04000000;
+enum SHF_MIPS_NAMES = 0x02000000;
+enum SHF_MIPS_NODUPE = 0x01000000;
+enum STO_MIPS_DEFAULT = 0x0;
+enum STO_MIPS_INTERNAL = 0x1;
+enum STO_MIPS_HIDDEN = 0x2;
+enum STO_MIPS_PROTECTED = 0x3;
+enum STO_MIPS_PLT = 0x8;
+enum STO_MIPS_SC_ALIGN_UNUSED = 0xff;
+enum STB_MIPS_SPLIT_COMMON = 13;
+
+union Elf32_gptab
+{
+ struct _gt_header
+ {
+ Elf32_Word gt_current_g_value;
+ Elf32_Word gt_unused;
+ } _gt_header gt_header;
+ struct _gt_entry
+ {
+ Elf32_Word gt_g_value;
+ Elf32_Word gt_bytes;
+ } _gt_entry gt_entry;
+}
+
+struct Elf32_RegInfo
+{
+ Elf32_Word ri_gprmask;
+ Elf32_Word[4] ri_cprmask;
+ Elf32_Sword ri_gp_value;
+}
+
+struct Elf_Options
+{
+ ubyte kind;
+ ubyte size;
+ Elf32_Section section;
+ Elf32_Word info;
+}
+
+enum ODK_NULL = 0;
+enum ODK_REGINFO = 1;
+enum ODK_EXCEPTIONS = 2;
+enum ODK_PAD = 3;
+enum ODK_HWPATCH = 4;
+enum ODK_FILL = 5;
+enum ODK_TAGS = 6;
+enum ODK_HWAND = 7;
+enum ODK_HWOR = 8;
+
+enum OEX_FPU_MIN = 0x1f;
+enum OEX_FPU_MAX = 0x1f00;
+enum OEX_PAGE0 = 0x10000;
+enum OEX_SMM = 0x20000;
+enum OEX_FPDBUG = 0x40000;
+enum OEX_PRECISEFP = OEX_FPDBUG;
+enum OEX_DISMISS = 0x80000;
+
+enum OEX_FPU_INVAL = 0x10;
+enum OEX_FPU_DIV0 = 0x08;
+enum OEX_FPU_OFLO = 0x04;
+enum OEX_FPU_UFLO = 0x02;
+enum OEX_FPU_INEX = 0x01;
+
+enum OHW_R4KEOP = 0x1;
+enum OHW_R8KPFETCH = 0x2;
+enum OHW_R5KEOP = 0x4;
+enum OHW_R5KCVTL = 0x8;
+
+enum OPAD_PREFIX = 0x1;
+enum OPAD_POSTFIX = 0x2;
+enum OPAD_SYMBOL = 0x4;
+
+struct Elf_Options_Hw
+{
+ Elf32_Word hwp_flags1;
+ Elf32_Word hwp_flags2;
+}
+
+enum OHWA0_R4KEOP_CHECKED = 0x00000001;
+enum OHWA1_R4KEOP_CLEAN = 0x00000002;
+
+enum R_MIPS_NONE = 0;
+enum R_MIPS_16 = 1;
+enum R_MIPS_32 = 2;
+enum R_MIPS_REL32 = 3;
+enum R_MIPS_26 = 4;
+enum R_MIPS_HI16 = 5;
+enum R_MIPS_LO16 = 6;
+enum R_MIPS_GPREL16 = 7;
+enum R_MIPS_LITERAL = 8;
+enum R_MIPS_GOT16 = 9;
+enum R_MIPS_PC16 = 10;
+enum R_MIPS_CALL16 = 11;
+enum R_MIPS_GPREL32 = 12;
+
+enum R_MIPS_SHIFT5 = 16;
+enum R_MIPS_SHIFT6 = 17;
+enum R_MIPS_64 = 18;
+enum R_MIPS_GOT_DISP = 19;
+enum R_MIPS_GOT_PAGE = 20;
+enum R_MIPS_GOT_OFST = 21;
+enum R_MIPS_GOT_HI16 = 22;
+enum R_MIPS_GOT_LO16 = 23;
+enum R_MIPS_SUB = 24;
+enum R_MIPS_INSERT_A = 25;
+enum R_MIPS_INSERT_B = 26;
+enum R_MIPS_DELETE = 27;
+enum R_MIPS_HIGHER = 28;
+enum R_MIPS_HIGHEST = 29;
+enum R_MIPS_CALL_HI16 = 30;
+enum R_MIPS_CALL_LO16 = 31;
+enum R_MIPS_SCN_DISP = 32;
+enum R_MIPS_REL16 = 33;
+enum R_MIPS_ADD_IMMEDIATE = 34;
+enum R_MIPS_PJUMP = 35;
+enum R_MIPS_RELGOT = 36;
+enum R_MIPS_JALR = 37;
+enum R_MIPS_TLS_DTPMOD32 = 38;
+enum R_MIPS_TLS_DTPREL32 = 39;
+enum R_MIPS_TLS_DTPMOD64 = 40;
+enum R_MIPS_TLS_DTPREL64 = 41;
+enum R_MIPS_TLS_GD = 42;
+enum R_MIPS_TLS_LDM = 43;
+enum R_MIPS_TLS_DTPREL_HI16 = 44;
+enum R_MIPS_TLS_DTPREL_LO16 = 45;
+enum R_MIPS_TLS_GOTTPREL = 46;
+enum R_MIPS_TLS_TPREL32 = 47;
+enum R_MIPS_TLS_TPREL64 = 48;
+enum R_MIPS_TLS_TPREL_HI16 = 49;
+enum R_MIPS_TLS_TPREL_LO16 = 50;
+enum R_MIPS_GLOB_DAT = 51;
+enum R_MIPS_COPY = 126;
+enum R_MIPS_JUMP_SLOT = 127;
+enum R_MIPS_NUM = 128;
+
+enum PT_MIPS_REGINFO = 0x70000000;
+enum PT_MIPS_RTPROC = 0x70000001;
+enum PT_MIPS_OPTIONS = 0x70000002;
+
+enum PF_MIPS_LOCAL = 0x10000000;
+
+enum DT_MIPS_RLD_VERSION = 0x70000001;
+enum DT_MIPS_TIME_STAMP = 0x70000002;
+enum DT_MIPS_ICHECKSUM = 0x70000003;
+enum DT_MIPS_IVERSION = 0x70000004;
+enum DT_MIPS_FLAGS = 0x70000005;
+enum DT_MIPS_BASE_ADDRESS = 0x70000006;
+enum DT_MIPS_MSYM = 0x70000007;
+enum DT_MIPS_CONFLICT = 0x70000008;
+enum DT_MIPS_LIBLIST = 0x70000009;
+enum DT_MIPS_LOCAL_GOTNO = 0x7000000a;
+enum DT_MIPS_CONFLICTNO = 0x7000000b;
+enum DT_MIPS_LIBLISTNO = 0x70000010;
+enum DT_MIPS_SYMTABNO = 0x70000011;
+enum DT_MIPS_UNREFEXTNO = 0x70000012;
+enum DT_MIPS_GOTSYM = 0x70000013;
+enum DT_MIPS_HIPAGENO = 0x70000014;
+enum DT_MIPS_RLD_MAP = 0x70000016;
+enum DT_MIPS_DELTA_CLASS = 0x70000017;
+enum DT_MIPS_DELTA_CLASS_NO = 0x70000018;
+enum DT_MIPS_DELTA_INSTANCE = 0x70000019;
+enum DT_MIPS_DELTA_INSTANCE_NO = 0x7000001a;
+enum DT_MIPS_DELTA_RELOC = 0x7000001b;
+enum DT_MIPS_DELTA_RELOC_NO = 0x7000001c;
+enum DT_MIPS_DELTA_SYM = 0x7000001d;
+enum DT_MIPS_DELTA_SYM_NO = 0x7000001e;
+enum DT_MIPS_DELTA_CLASSSYM = 0x70000020;
+enum DT_MIPS_DELTA_CLASSSYM_NO = 0x70000021;
+enum DT_MIPS_CXX_FLAGS = 0x70000022;
+enum DT_MIPS_PIXIE_INIT = 0x70000023;
+enum DT_MIPS_SYMBOL_LIB = 0x70000024;
+enum DT_MIPS_LOCALPAGE_GOTIDX = 0x70000025;
+enum DT_MIPS_LOCAL_GOTIDX = 0x70000026;
+enum DT_MIPS_HIDDEN_GOTIDX = 0x70000027;
+enum DT_MIPS_PROTECTED_GOTIDX = 0x70000028;
+enum DT_MIPS_OPTIONS = 0x70000029;
+enum DT_MIPS_INTERFACE = 0x7000002a;
+enum DT_MIPS_DYNSTR_ALIGN = 0x7000002b;
+enum DT_MIPS_INTERFACE_SIZE = 0x7000002c;
+enum DT_MIPS_RLD_TEXT_RESOLVE_ADDR = 0x7000002d;
+enum DT_MIPS_PERF_SUFFIX = 0x7000002e;
+enum DT_MIPS_COMPACT_SIZE = 0x7000002f;
+enum DT_MIPS_GP_VALUE = 0x70000030;
+enum DT_MIPS_AUX_DYNAMIC = 0x70000031;
+enum DT_MIPS_PLTGOT = 0x70000032;
+enum DT_MIPS_RWPLT = 0x70000034;
+enum DT_MIPS_NUM = 0x35;
+
+enum RHF_NONE = 0;
+enum RHF_QUICKSTART = (1 << 0);
+enum RHF_NOTPOT = (1 << 1);
+enum RHF_NO_LIBRARY_REPLACEMENT = (1 << 2);
+enum RHF_NO_MOVE = (1 << 3);
+enum RHF_SGI_ONLY = (1 << 4);
+enum RHF_GUARANTEE_INIT = (1 << 5);
+enum RHF_DELTA_C_PLUS_PLUS = (1 << 6);
+enum RHF_GUARANTEE_START_INIT = (1 << 7);
+enum RHF_PIXIE = (1 << 8);
+enum RHF_DEFAULT_DELAY_LOAD = (1 << 9);
+enum RHF_REQUICKSTART = (1 << 10);
+enum RHF_REQUICKSTARTED = (1 << 11);
+enum RHF_CORD = (1 << 12);
+enum RHF_NO_UNRES_UNDEF = (1 << 13);
+enum RHF_RLD_ORDER_SAFE = (1 << 14);
+
+struct Elf32_Lib
+{
+ Elf32_Word l_name;
+ Elf32_Word l_time_stamp;
+ Elf32_Word l_checksum;
+ Elf32_Word l_version;
+ Elf32_Word l_flags;
+}
+
+struct Elf64_Lib
+{
+ Elf64_Word l_name;
+ Elf64_Word l_time_stamp;
+ Elf64_Word l_checksum;
+ Elf64_Word l_version;
+ Elf64_Word l_flags;
+}
+
+enum LL_NONE = 0;
+enum LL_EXACT_MATCH = (1 << 0);
+enum LL_IGNORE_INT_VER = (1 << 1);
+enum LL_REQUIRE_MINOR = (1 << 2);
+enum LL_EXPORTS = (1 << 3);
+enum LL_DELAY_LOAD = (1 << 4);
+enum LL_DELTA = (1 << 5);
+
+alias Elf32_Addr Elf32_Conflict;
+
+enum EF_PARISC_TRAPNIL = 0x00010000;
+enum EF_PARISC_EXT = 0x00020000;
+enum EF_PARISC_LSB = 0x00040000;
+enum EF_PARISC_WIDE = 0x00080000;
+enum EF_PARISC_NO_KABP = 0x00100000;
+enum EF_PARISC_LAZYSWAP = 0x00400000;
+enum EF_PARISC_ARCH = 0x0000ffff;
+
+enum EFA_PARISC_1_0 = 0x020b;
+enum EFA_PARISC_1_1 = 0x0210;
+enum EFA_PARISC_2_0 = 0x0214;
+
+enum SHN_PARISC_ANSI_COMMON = 0xff00;
+enum SHN_PARISC_HUGE_COMMON = 0xff01;
+
+enum SHT_PARISC_EXT = 0x70000000;
+enum SHT_PARISC_UNWIND = 0x70000001;
+enum SHT_PARISC_DOC = 0x70000002;
+
+enum SHF_PARISC_SHORT = 0x20000000;
+enum SHF_PARISC_HUGE = 0x40000000;
+enum SHF_PARISC_SBP = 0x80000000;
+
+enum STT_PARISC_MILLICODE = 13;
+
+enum STT_HP_OPAQUE = (STT_LOOS + 0x1);
+enum STT_HP_STUB = (STT_LOOS + 0x2);
+
+enum R_PARISC_NONE = 0;
+enum R_PARISC_DIR32 = 1;
+enum R_PARISC_DIR21L = 2;
+enum R_PARISC_DIR17R = 3;
+enum R_PARISC_DIR17F = 4;
+enum R_PARISC_DIR14R = 6;
+enum R_PARISC_PCREL32 = 9;
+enum R_PARISC_PCREL21L = 10;
+enum R_PARISC_PCREL17R = 11;
+enum R_PARISC_PCREL17F = 12;
+enum R_PARISC_PCREL14R = 14;
+enum R_PARISC_DPREL21L = 18;
+enum R_PARISC_DPREL14R = 22;
+enum R_PARISC_GPREL21L = 26;
+enum R_PARISC_GPREL14R = 30;
+enum R_PARISC_LTOFF21L = 34;
+enum R_PARISC_LTOFF14R = 38;
+enum R_PARISC_SECREL32 = 41;
+enum R_PARISC_SEGBASE = 48;
+enum R_PARISC_SEGREL32 = 49;
+enum R_PARISC_PLTOFF21L = 50;
+enum R_PARISC_PLTOFF14R = 54;
+enum R_PARISC_LTOFF_FPTR32 = 57;
+enum R_PARISC_LTOFF_FPTR21L = 58;
+enum R_PARISC_LTOFF_FPTR14R = 62;
+enum R_PARISC_FPTR64 = 64;
+enum R_PARISC_PLABEL32 = 65;
+enum R_PARISC_PLABEL21L = 66;
+enum R_PARISC_PLABEL14R = 70;
+enum R_PARISC_PCREL64 = 72;
+enum R_PARISC_PCREL22F = 74;
+enum R_PARISC_PCREL14WR = 75;
+enum R_PARISC_PCREL14DR = 76;
+enum R_PARISC_PCREL16F = 77;
+enum R_PARISC_PCREL16WF = 78;
+enum R_PARISC_PCREL16DF = 79;
+enum R_PARISC_DIR64 = 80;
+enum R_PARISC_DIR14WR = 83;
+enum R_PARISC_DIR14DR = 84;
+enum R_PARISC_DIR16F = 85;
+enum R_PARISC_DIR16WF = 86;
+enum R_PARISC_DIR16DF = 87;
+enum R_PARISC_GPREL64 = 88;
+enum R_PARISC_GPREL14WR = 91;
+enum R_PARISC_GPREL14DR = 92;
+enum R_PARISC_GPREL16F = 93;
+enum R_PARISC_GPREL16WF = 94;
+enum R_PARISC_GPREL16DF = 95;
+enum R_PARISC_LTOFF64 = 96;
+enum R_PARISC_LTOFF14WR = 99;
+enum R_PARISC_LTOFF14DR = 100;
+enum R_PARISC_LTOFF16F = 101;
+enum R_PARISC_LTOFF16WF = 102;
+enum R_PARISC_LTOFF16DF = 103;
+enum R_PARISC_SECREL64 = 104;
+enum R_PARISC_SEGREL64 = 112;
+enum R_PARISC_PLTOFF14WR = 115;
+enum R_PARISC_PLTOFF14DR = 116;
+enum R_PARISC_PLTOFF16F = 117;
+enum R_PARISC_PLTOFF16WF = 118;
+enum R_PARISC_PLTOFF16DF = 119;
+enum R_PARISC_LTOFF_FPTR64 = 120;
+enum R_PARISC_LTOFF_FPTR14WR = 123;
+enum R_PARISC_LTOFF_FPTR14DR = 124;
+enum R_PARISC_LTOFF_FPTR16F = 125;
+enum R_PARISC_LTOFF_FPTR16WF = 126;
+enum R_PARISC_LTOFF_FPTR16DF = 127;
+enum R_PARISC_LORESERVE = 128;
+enum R_PARISC_COPY = 128;
+enum R_PARISC_IPLT = 129;
+enum R_PARISC_EPLT = 130;
+enum R_PARISC_TPREL32 = 153;
+enum R_PARISC_TPREL21L = 154;
+enum R_PARISC_TPREL14R = 158;
+enum R_PARISC_LTOFF_TP21L = 162;
+enum R_PARISC_LTOFF_TP14R = 166;
+enum R_PARISC_LTOFF_TP14F = 167;
+enum R_PARISC_TPREL64 = 216;
+enum R_PARISC_TPREL14WR = 219;
+enum R_PARISC_TPREL14DR = 220;
+enum R_PARISC_TPREL16F = 221;
+enum R_PARISC_TPREL16WF = 222;
+enum R_PARISC_TPREL16DF = 223;
+enum R_PARISC_LTOFF_TP64 = 224;
+enum R_PARISC_LTOFF_TP14WR = 227;
+enum R_PARISC_LTOFF_TP14DR = 228;
+enum R_PARISC_LTOFF_TP16F = 229;
+enum R_PARISC_LTOFF_TP16WF = 230;
+enum R_PARISC_LTOFF_TP16DF = 231;
+enum R_PARISC_GNU_VTENTRY = 232;
+enum R_PARISC_GNU_VTINHERIT = 233;
+enum R_PARISC_TLS_GD21L = 234;
+enum R_PARISC_TLS_GD14R = 235;
+enum R_PARISC_TLS_GDCALL = 236;
+enum R_PARISC_TLS_LDM21L = 237;
+enum R_PARISC_TLS_LDM14R = 238;
+enum R_PARISC_TLS_LDMCALL = 239;
+enum R_PARISC_TLS_LDO21L = 240;
+enum R_PARISC_TLS_LDO14R = 241;
+enum R_PARISC_TLS_DTPMOD32 = 242;
+enum R_PARISC_TLS_DTPMOD64 = 243;
+enum R_PARISC_TLS_DTPOFF32 = 244;
+enum R_PARISC_TLS_DTPOFF64 = 245;
+enum R_PARISC_TLS_LE21L = R_PARISC_TPREL21L;
+enum R_PARISC_TLS_LE14R = R_PARISC_TPREL14R;
+enum R_PARISC_TLS_IE21L = R_PARISC_LTOFF_TP21L;
+enum R_PARISC_TLS_IE14R = R_PARISC_LTOFF_TP14R;
+enum R_PARISC_TLS_TPREL32 = R_PARISC_TPREL32;
+enum R_PARISC_TLS_TPREL64 = R_PARISC_TPREL64;
+enum R_PARISC_HIRESERVE = 255;
+
+enum PT_HP_TLS = (PT_LOOS + 0x0);
+enum PT_HP_CORE_NONE = (PT_LOOS + 0x1);
+enum PT_HP_CORE_VERSION = (PT_LOOS + 0x2);
+enum PT_HP_CORE_KERNEL = (PT_LOOS + 0x3);
+enum PT_HP_CORE_COMM = (PT_LOOS + 0x4);
+enum PT_HP_CORE_PROC = (PT_LOOS + 0x5);
+enum PT_HP_CORE_LOADABLE = (PT_LOOS + 0x6);
+enum PT_HP_CORE_STACK = (PT_LOOS + 0x7);
+enum PT_HP_CORE_SHM = (PT_LOOS + 0x8);
+enum PT_HP_CORE_MMF = (PT_LOOS + 0x9);
+enum PT_HP_PARALLEL = (PT_LOOS + 0x10);
+enum PT_HP_FASTBIND = (PT_LOOS + 0x11);
+enum PT_HP_OPT_ANNOT = (PT_LOOS + 0x12);
+enum PT_HP_HSL_ANNOT = (PT_LOOS + 0x13);
+enum PT_HP_STACK = (PT_LOOS + 0x14);
+
+enum PT_PARISC_ARCHEXT = 0x70000000;
+enum PT_PARISC_UNWIND = 0x70000001;
+
+enum PF_PARISC_SBP = 0x08000000;
+
+enum PF_HP_PAGE_SIZE = 0x00100000;
+enum PF_HP_FAR_SHARED = 0x00200000;
+enum PF_HP_NEAR_SHARED = 0x00400000;
+enum PF_HP_CODE = 0x01000000;
+enum PF_HP_MODIFY = 0x02000000;
+enum PF_HP_LAZYSWAP = 0x04000000;
+enum PF_HP_SBP = 0x08000000;
+
+enum EF_ALPHA_32BIT = 1;
+enum EF_ALPHA_CANRELAX = 2;
+enum SHT_ALPHA_DEBUG = 0x70000001;
+enum SHT_ALPHA_REGINFO = 0x70000002;
+
+enum SHF_ALPHA_GPREL = 0x10000000;
+enum STO_ALPHA_NOPV = 0x80;
+enum STO_ALPHA_STD_GPLOAD = 0x88;
+
+enum R_ALPHA_NONE = 0;
+enum R_ALPHA_REFLONG = 1;
+enum R_ALPHA_REFQUAD = 2;
+enum R_ALPHA_GPREL32 = 3;
+enum R_ALPHA_LITERAL = 4;
+enum R_ALPHA_LITUSE = 5;
+enum R_ALPHA_GPDISP = 6;
+enum R_ALPHA_BRADDR = 7;
+enum R_ALPHA_HINT = 8;
+enum R_ALPHA_SREL16 = 9;
+enum R_ALPHA_SREL32 = 10;
+enum R_ALPHA_SREL64 = 11;
+enum R_ALPHA_GPRELHIGH = 17;
+enum R_ALPHA_GPRELLOW = 18;
+enum R_ALPHA_GPREL16 = 19;
+enum R_ALPHA_COPY = 24;
+enum R_ALPHA_GLOB_DAT = 25;
+enum R_ALPHA_JMP_SLOT = 26;
+enum R_ALPHA_RELATIVE = 27;
+enum R_ALPHA_TLS_GD_HI = 28;
+enum R_ALPHA_TLSGD = 29;
+enum R_ALPHA_TLS_LDM = 30;
+enum R_ALPHA_DTPMOD64 = 31;
+enum R_ALPHA_GOTDTPREL = 32;
+enum R_ALPHA_DTPREL64 = 33;
+enum R_ALPHA_DTPRELHI = 34;
+enum R_ALPHA_DTPRELLO = 35;
+enum R_ALPHA_DTPREL16 = 36;
+enum R_ALPHA_GOTTPREL = 37;
+enum R_ALPHA_TPREL64 = 38;
+enum R_ALPHA_TPRELHI = 39;
+enum R_ALPHA_TPRELLO = 40;
+enum R_ALPHA_TPREL16 = 41;
+enum R_ALPHA_NUM = 46;
+enum LITUSE_ALPHA_ADDR = 0;
+enum LITUSE_ALPHA_BASE = 1;
+enum LITUSE_ALPHA_BYTOFF = 2;
+enum LITUSE_ALPHA_JSR = 3;
+enum LITUSE_ALPHA_TLS_GD = 4;
+enum LITUSE_ALPHA_TLS_LDM = 5;
+enum DT_ALPHA_PLTRO = (DT_LOPROC + 0);
+enum DT_ALPHA_NUM = 1;
+enum EF_PPC_EMB = 0x80000000;
+enum EF_PPC_RELOCATABLE = 0x00010000;
+enum EF_PPC_RELOCATABLE_LIB = 0x00008000;
+enum R_PPC_NONE = 0;
+enum R_PPC_ADDR32 = 1;
+enum R_PPC_ADDR24 = 2;
+enum R_PPC_ADDR16 = 3;
+enum R_PPC_ADDR16_LO = 4;
+enum R_PPC_ADDR16_HI = 5;
+enum R_PPC_ADDR16_HA = 6;
+enum R_PPC_ADDR14 = 7;
+enum R_PPC_ADDR14_BRTAKEN = 8;
+enum R_PPC_ADDR14_BRNTAKEN = 9;
+enum R_PPC_REL24 = 10;
+enum R_PPC_REL14 = 11;
+enum R_PPC_REL14_BRTAKEN = 12;
+enum R_PPC_REL14_BRNTAKEN = 13;
+enum R_PPC_GOT16 = 14;
+enum R_PPC_GOT16_LO = 15;
+enum R_PPC_GOT16_HI = 16;
+enum R_PPC_GOT16_HA = 17;
+enum R_PPC_PLTREL24 = 18;
+enum R_PPC_COPY = 19;
+enum R_PPC_GLOB_DAT = 20;
+enum R_PPC_JMP_SLOT = 21;
+enum R_PPC_RELATIVE = 22;
+enum R_PPC_LOCAL24PC = 23;
+enum R_PPC_UADDR32 = 24;
+enum R_PPC_UADDR16 = 25;
+enum R_PPC_REL32 = 26;
+enum R_PPC_PLT32 = 27;
+enum R_PPC_PLTREL32 = 28;
+enum R_PPC_PLT16_LO = 29;
+enum R_PPC_PLT16_HI = 30;
+enum R_PPC_PLT16_HA = 31;
+enum R_PPC_SDAREL16 = 32;
+enum R_PPC_SECTOFF = 33;
+enum R_PPC_SECTOFF_LO = 34;
+enum R_PPC_SECTOFF_HI = 35;
+enum R_PPC_SECTOFF_HA = 36;
+enum R_PPC_TLS = 67;
+enum R_PPC_DTPMOD32 = 68;
+enum R_PPC_TPREL16 = 69;
+enum R_PPC_TPREL16_LO = 70;
+enum R_PPC_TPREL16_HI = 71;
+enum R_PPC_TPREL16_HA = 72;
+enum R_PPC_TPREL32 = 73;
+enum R_PPC_DTPREL16 = 74;
+enum R_PPC_DTPREL16_LO = 75;
+enum R_PPC_DTPREL16_HI = 76;
+enum R_PPC_DTPREL16_HA = 77;
+enum R_PPC_DTPREL32 = 78;
+enum R_PPC_GOT_TLSGD16 = 79;
+enum R_PPC_GOT_TLSGD16_LO = 80;
+enum R_PPC_GOT_TLSGD16_HI = 81;
+enum R_PPC_GOT_TLSGD16_HA = 82;
+enum R_PPC_GOT_TLSLD16 = 83;
+enum R_PPC_GOT_TLSLD16_LO = 84;
+enum R_PPC_GOT_TLSLD16_HI = 85;
+enum R_PPC_GOT_TLSLD16_HA = 86;
+enum R_PPC_GOT_TPREL16 = 87;
+enum R_PPC_GOT_TPREL16_LO = 88;
+enum R_PPC_GOT_TPREL16_HI = 89;
+enum R_PPC_GOT_TPREL16_HA = 90;
+enum R_PPC_GOT_DTPREL16 = 91;
+enum R_PPC_GOT_DTPREL16_LO = 92;
+enum R_PPC_GOT_DTPREL16_HI = 93;
+enum R_PPC_GOT_DTPREL16_HA = 94;
+enum R_PPC_EMB_NADDR32 = 101;
+enum R_PPC_EMB_NADDR16 = 102;
+enum R_PPC_EMB_NADDR16_LO = 103;
+enum R_PPC_EMB_NADDR16_HI = 104;
+enum R_PPC_EMB_NADDR16_HA = 105;
+enum R_PPC_EMB_SDAI16 = 106;
+enum R_PPC_EMB_SDA2I16 = 107;
+enum R_PPC_EMB_SDA2REL = 108;
+enum R_PPC_EMB_SDA21 = 109;
+enum R_PPC_EMB_MRKREF = 110;
+enum R_PPC_EMB_RELSEC16 = 111;
+enum R_PPC_EMB_RELST_LO = 112;
+enum R_PPC_EMB_RELST_HI = 113;
+enum R_PPC_EMB_RELST_HA = 114;
+enum R_PPC_EMB_BIT_FLD = 115;
+enum R_PPC_EMB_RELSDA = 116;
+enum R_PPC_DIAB_SDA21_LO = 180;
+enum R_PPC_DIAB_SDA21_HI = 181;
+enum R_PPC_DIAB_SDA21_HA = 182;
+enum R_PPC_DIAB_RELSDA_LO = 183;
+enum R_PPC_DIAB_RELSDA_HI = 184;
+enum R_PPC_DIAB_RELSDA_HA = 185;
+enum R_PPC_IRELATIVE = 248;
+enum R_PPC_REL16 = 249;
+enum R_PPC_REL16_LO = 250;
+enum R_PPC_REL16_HI = 251;
+enum R_PPC_REL16_HA = 252;
+enum R_PPC_TOC16 = 255;
+enum DT_PPC_GOT = (DT_LOPROC + 0);
+enum DT_PPC_NUM = 1;
+enum R_PPC64_NONE = R_PPC_NONE;
+enum R_PPC64_ADDR32 = R_PPC_ADDR32;
+enum R_PPC64_ADDR24 = R_PPC_ADDR24;
+enum R_PPC64_ADDR16 = R_PPC_ADDR16;
+enum R_PPC64_ADDR16_LO = R_PPC_ADDR16_LO;
+enum R_PPC64_ADDR16_HI = R_PPC_ADDR16_HI;
+enum R_PPC64_ADDR16_HA = R_PPC_ADDR16_HA;
+enum R_PPC64_ADDR14 = R_PPC_ADDR14;
+enum R_PPC64_ADDR14_BRTAKEN = R_PPC_ADDR14_BRTAKEN;
+enum R_PPC64_ADDR14_BRNTAKEN = R_PPC_ADDR14_BRNTAKEN;
+enum R_PPC64_REL24 = R_PPC_REL24;
+enum R_PPC64_REL14 = R_PPC_REL14;
+enum R_PPC64_REL14_BRTAKEN = R_PPC_REL14_BRTAKEN;
+enum R_PPC64_REL14_BRNTAKEN = R_PPC_REL14_BRNTAKEN;
+enum R_PPC64_GOT16 = R_PPC_GOT16;
+enum R_PPC64_GOT16_LO = R_PPC_GOT16_LO;
+enum R_PPC64_GOT16_HI = R_PPC_GOT16_HI;
+enum R_PPC64_GOT16_HA = R_PPC_GOT16_HA;
+
+enum R_PPC64_COPY = R_PPC_COPY;
+enum R_PPC64_GLOB_DAT = R_PPC_GLOB_DAT;
+enum R_PPC64_JMP_SLOT = R_PPC_JMP_SLOT;
+enum R_PPC64_RELATIVE = R_PPC_RELATIVE;
+
+enum R_PPC64_UADDR32 = R_PPC_UADDR32;
+enum R_PPC64_UADDR16 = R_PPC_UADDR16;
+enum R_PPC64_REL32 = R_PPC_REL32;
+enum R_PPC64_PLT32 = R_PPC_PLT32;
+enum R_PPC64_PLTREL32 = R_PPC_PLTREL32;
+enum R_PPC64_PLT16_LO = R_PPC_PLT16_LO;
+enum R_PPC64_PLT16_HI = R_PPC_PLT16_HI;
+enum R_PPC64_PLT16_HA = R_PPC_PLT16_HA;
+
+enum R_PPC64_SECTOFF = R_PPC_SECTOFF;
+enum R_PPC64_SECTOFF_LO = R_PPC_SECTOFF_LO;
+enum R_PPC64_SECTOFF_HI = R_PPC_SECTOFF_HI;
+enum R_PPC64_SECTOFF_HA = R_PPC_SECTOFF_HA;
+enum R_PPC64_ADDR30 = 37;
+enum R_PPC64_ADDR64 = 38;
+enum R_PPC64_ADDR16_HIGHER = 39;
+enum R_PPC64_ADDR16_HIGHERA = 40;
+enum R_PPC64_ADDR16_HIGHEST = 41;
+enum R_PPC64_ADDR16_HIGHESTA = 42;
+enum R_PPC64_UADDR64 = 43;
+enum R_PPC64_REL64 = 44;
+enum R_PPC64_PLT64 = 45;
+enum R_PPC64_PLTREL64 = 46;
+enum R_PPC64_TOC16 = 47;
+enum R_PPC64_TOC16_LO = 48;
+enum R_PPC64_TOC16_HI = 49;
+enum R_PPC64_TOC16_HA = 50;
+enum R_PPC64_TOC = 51;
+enum R_PPC64_PLTGOT16 = 52;
+enum R_PPC64_PLTGOT16_LO = 53;
+enum R_PPC64_PLTGOT16_HI = 54;
+enum R_PPC64_PLTGOT16_HA = 55;
+
+enum R_PPC64_ADDR16_DS = 56;
+enum R_PPC64_ADDR16_LO_DS = 57;
+enum R_PPC64_GOT16_DS = 58;
+enum R_PPC64_GOT16_LO_DS = 59;
+enum R_PPC64_PLT16_LO_DS = 60;
+enum R_PPC64_SECTOFF_DS = 61;
+enum R_PPC64_SECTOFF_LO_DS = 62;
+enum R_PPC64_TOC16_DS = 63;
+enum R_PPC64_TOC16_LO_DS = 64;
+enum R_PPC64_PLTGOT16_DS = 65;
+enum R_PPC64_PLTGOT16_LO_DS = 66;
+enum R_PPC64_TLS = 67;
+enum R_PPC64_DTPMOD64 = 68;
+enum R_PPC64_TPREL16 = 69;
+enum R_PPC64_TPREL16_LO = 70;
+enum R_PPC64_TPREL16_HI = 71;
+enum R_PPC64_TPREL16_HA = 72;
+enum R_PPC64_TPREL64 = 73;
+enum R_PPC64_DTPREL16 = 74;
+enum R_PPC64_DTPREL16_LO = 75;
+enum R_PPC64_DTPREL16_HI = 76;
+enum R_PPC64_DTPREL16_HA = 77;
+enum R_PPC64_DTPREL64 = 78;
+enum R_PPC64_GOT_TLSGD16 = 79;
+enum R_PPC64_GOT_TLSGD16_LO = 80;
+enum R_PPC64_GOT_TLSGD16_HI = 81;
+enum R_PPC64_GOT_TLSGD16_HA = 82;
+enum R_PPC64_GOT_TLSLD16 = 83;
+enum R_PPC64_GOT_TLSLD16_LO = 84;
+enum R_PPC64_GOT_TLSLD16_HI = 85;
+enum R_PPC64_GOT_TLSLD16_HA = 86;
+enum R_PPC64_GOT_TPREL16_DS = 87;
+enum R_PPC64_GOT_TPREL16_LO_DS = 88;
+enum R_PPC64_GOT_TPREL16_HI = 89;
+enum R_PPC64_GOT_TPREL16_HA = 90;
+enum R_PPC64_GOT_DTPREL16_DS = 91;
+enum R_PPC64_GOT_DTPREL16_LO_DS = 92;
+enum R_PPC64_GOT_DTPREL16_HI = 93;
+enum R_PPC64_GOT_DTPREL16_HA = 94;
+enum R_PPC64_TPREL16_DS = 95;
+enum R_PPC64_TPREL16_LO_DS = 96;
+enum R_PPC64_TPREL16_HIGHER = 97;
+enum R_PPC64_TPREL16_HIGHERA = 98;
+enum R_PPC64_TPREL16_HIGHEST = 99;
+enum R_PPC64_TPREL16_HIGHESTA = 100;
+enum R_PPC64_DTPREL16_DS = 101;
+enum R_PPC64_DTPREL16_LO_DS = 102;
+enum R_PPC64_DTPREL16_HIGHER = 103;
+enum R_PPC64_DTPREL16_HIGHERA = 104;
+enum R_PPC64_DTPREL16_HIGHEST = 105;
+enum R_PPC64_DTPREL16_HIGHESTA = 106;
+enum R_PPC64_JMP_IREL = 247;
+enum R_PPC64_IRELATIVE = 248;
+enum R_PPC64_REL16 = 249;
+enum R_PPC64_REL16_LO = 250;
+enum R_PPC64_REL16_HI = 251;
+enum R_PPC64_REL16_HA = 252;
+enum DT_PPC64_GLINK = (DT_LOPROC + 0);
+enum DT_PPC64_OPD = (DT_LOPROC + 1);
+enum DT_PPC64_OPDSZ = (DT_LOPROC + 2);
+enum DT_PPC64_NUM = 3;
+enum EF_ARM_RELEXEC = 0x01;
+enum EF_ARM_HASENTRY = 0x02;
+enum EF_ARM_INTERWORK = 0x04;
+enum EF_ARM_APCS_26 = 0x08;
+enum EF_ARM_APCS_FLOAT = 0x10;
+enum EF_ARM_PIC = 0x20;
+enum EF_ARM_ALIGN8 = 0x40;
+enum EF_ARM_NEW_ABI = 0x80;
+enum EF_ARM_OLD_ABI = 0x100;
+enum EF_ARM_SOFT_FLOAT = 0x200;
+enum EF_ARM_VFP_FLOAT = 0x400;
+enum EF_ARM_MAVERICK_FLOAT = 0x800;
+
+enum EF_ARM_ABI_FLOAT_SOFT = 0x200;
+enum EF_ARM_ABI_FLOAT_HARD = 0x400;
+enum EF_ARM_SYMSARESORTED = 0x04;
+enum EF_ARM_DYNSYMSUSESEGIDX = 0x08;
+enum EF_ARM_MAPSYMSFIRST = 0x10;
+enum EF_ARM_EABIMASK = 0XFF000000;
+enum EF_ARM_BE8 = 0x00800000;
+enum EF_ARM_LE8 = 0x00400000;
+
+extern (D) auto EF_ARM_EABI_VERSION(F)(F flags) { return flags & EF_ARM_EABIMASK; }
+enum EF_ARM_EABI_UNKNOWN = 0x00000000;
+enum EF_ARM_EABI_VER1 = 0x01000000;
+enum EF_ARM_EABI_VER2 = 0x02000000;
+enum EF_ARM_EABI_VER3 = 0x03000000;
+enum EF_ARM_EABI_VER4 = 0x04000000;
+enum EF_ARM_EABI_VER5 = 0x05000000;
+enum STT_ARM_TFUNC = STT_LOPROC;
+enum STT_ARM_16BIT = STT_HIPROC;
+enum SHF_ARM_ENTRYSECT = 0x10000000;
+enum SHF_ARM_COMDEF = 0x80000000;
+enum PF_ARM_SB = 0x10000000;
+enum PF_ARM_PI = 0x20000000;
+enum PF_ARM_ABS = 0x40000000;
+enum PT_ARM_EXIDX = (PT_LOPROC + 1);
+enum SHT_ARM_EXIDX = (SHT_LOPROC + 1);
+enum SHT_ARM_PREEMPTMAP = (SHT_LOPROC + 2);
+enum SHT_ARM_ATTRIBUTES = (SHT_LOPROC + 3);
+
+enum R_AARCH64_NONE = 0;
+enum R_AARCH64_ABS64 = 257;
+enum R_AARCH64_ABS32 = 258;
+enum R_AARCH64_COPY = 1024;
+enum R_AARCH64_GLOB_DAT = 1025;
+enum R_AARCH64_JUMP_SLOT = 1026;
+enum R_AARCH64_RELATIVE = 1027;
+enum R_AARCH64_TLS_DTPMOD64 = 1028;
+enum R_AARCH64_TLS_DTPREL64 = 1029;
+enum R_AARCH64_TLS_TPREL64 = 1030;
+enum R_AARCH64_TLSDESC = 1031;
+
+enum R_ARM_NONE = 0;
+enum R_ARM_PC24 = 1;
+enum R_ARM_ABS32 = 2;
+enum R_ARM_REL32 = 3;
+enum R_ARM_PC13 = 4;
+enum R_ARM_ABS16 = 5;
+enum R_ARM_ABS12 = 6;
+enum R_ARM_THM_ABS5 = 7;
+enum R_ARM_ABS8 = 8;
+enum R_ARM_SBREL32 = 9;
+enum R_ARM_THM_PC22 = 10;
+enum R_ARM_THM_PC8 = 11;
+enum R_ARM_AMP_VCALL9 = 12;
+enum R_ARM_SWI24 = 13;
+enum R_ARM_TLS_DESC = 13;
+enum R_ARM_THM_SWI8 = 14;
+enum R_ARM_XPC25 = 15;
+enum R_ARM_THM_XPC22 = 16;
+enum R_ARM_TLS_DTPMOD32 = 17;
+enum R_ARM_TLS_DTPOFF32 = 18;
+enum R_ARM_TLS_TPOFF32 = 19;
+enum R_ARM_COPY = 20;
+enum R_ARM_GLOB_DAT = 21;
+enum R_ARM_JUMP_SLOT = 22;
+enum R_ARM_RELATIVE = 23;
+enum R_ARM_GOTOFF = 24;
+enum R_ARM_GOTPC = 25;
+enum R_ARM_GOT32 = 26;
+enum R_ARM_PLT32 = 27;
+enum R_ARM_ALU_PCREL_7_0 = 32;
+enum R_ARM_ALU_PCREL_15_8 = 33;
+enum R_ARM_ALU_PCREL_23_15 = 34;
+enum R_ARM_LDR_SBREL_11_0 = 35;
+enum R_ARM_ALU_SBREL_19_12 = 36;
+enum R_ARM_ALU_SBREL_27_20 = 37;
+enum R_ARM_TLS_GOTDESC = 90;
+enum R_ARM_TLS_CALL = 91;
+enum R_ARM_TLS_DESCSEQ = 92;
+enum R_ARM_THM_TLS_CALL = 93;
+enum R_ARM_GNU_VTENTRY = 100;
+enum R_ARM_GNU_VTINHERIT = 101;
+enum R_ARM_THM_PC11 = 102;
+enum R_ARM_THM_PC9 = 103;
+enum R_ARM_TLS_GD32 = 104;
+enum R_ARM_TLS_LDM32 = 105;
+enum R_ARM_TLS_LDO32 = 106;
+enum R_ARM_TLS_IE32 = 107;
+enum R_ARM_TLS_LE32 = 108;
+enum R_ARM_THM_TLS_DESCSEQ = 129;
+enum R_ARM_IRELATIVE = 160;
+enum R_ARM_RXPC25 = 249;
+enum R_ARM_RSBREL32 = 250;
+enum R_ARM_THM_RPC22 = 251;
+enum R_ARM_RREL32 = 252;
+enum R_ARM_RABS22 = 253;
+enum R_ARM_RPC24 = 254;
+enum R_ARM_RBASE = 255;
+enum R_ARM_NUM = 256;
+enum EF_IA_64_MASKOS = 0x0000000f;
+enum EF_IA_64_ABI64 = 0x00000010;
+enum EF_IA_64_ARCH = 0xff000000;
+enum PT_IA_64_ARCHEXT = (PT_LOPROC + 0);
+enum PT_IA_64_UNWIND = (PT_LOPROC + 1);
+enum PT_IA_64_HP_OPT_ANOT = (PT_LOOS + 0x12);
+enum PT_IA_64_HP_HSL_ANOT = (PT_LOOS + 0x13);
+enum PT_IA_64_HP_STACK = (PT_LOOS + 0x14);
+enum PF_IA_64_NORECOV = 0x80000000;
+enum SHT_IA_64_EXT = (SHT_LOPROC + 0);
+enum SHT_IA_64_UNWIND = (SHT_LOPROC + 1);
+enum SHF_IA_64_SHORT = 0x10000000;
+enum SHF_IA_64_NORECOV = 0x20000000;
+enum DT_IA_64_PLT_RESERVE = (DT_LOPROC + 0);
+enum DT_IA_64_NUM = 1;
+enum R_IA64_NONE = 0x00;
+enum R_IA64_IMM14 = 0x21;
+enum R_IA64_IMM22 = 0x22;
+enum R_IA64_IMM64 = 0x23;
+enum R_IA64_DIR32MSB = 0x24;
+enum R_IA64_DIR32LSB = 0x25;
+enum R_IA64_DIR64MSB = 0x26;
+enum R_IA64_DIR64LSB = 0x27;
+enum R_IA64_GPREL22 = 0x2a;
+enum R_IA64_GPREL64I = 0x2b;
+enum R_IA64_GPREL32MSB = 0x2c;
+enum R_IA64_GPREL32LSB = 0x2d;
+enum R_IA64_GPREL64MSB = 0x2e;
+enum R_IA64_GPREL64LSB = 0x2f;
+enum R_IA64_LTOFF22 = 0x32;
+enum R_IA64_LTOFF64I = 0x33;
+enum R_IA64_PLTOFF22 = 0x3a;
+enum R_IA64_PLTOFF64I = 0x3b;
+enum R_IA64_PLTOFF64MSB = 0x3e;
+enum R_IA64_PLTOFF64LSB = 0x3f;
+enum R_IA64_FPTR64I = 0x43;
+enum R_IA64_FPTR32MSB = 0x44;
+enum R_IA64_FPTR32LSB = 0x45;
+enum R_IA64_FPTR64MSB = 0x46;
+enum R_IA64_FPTR64LSB = 0x47;
+enum R_IA64_PCREL60B = 0x48;
+enum R_IA64_PCREL21B = 0x49;
+enum R_IA64_PCREL21M = 0x4a;
+enum R_IA64_PCREL21F = 0x4b;
+enum R_IA64_PCREL32MSB = 0x4c;
+enum R_IA64_PCREL32LSB = 0x4d;
+enum R_IA64_PCREL64MSB = 0x4e;
+enum R_IA64_PCREL64LSB = 0x4f;
+enum R_IA64_LTOFF_FPTR22 = 0x52;
+enum R_IA64_LTOFF_FPTR64I = 0x53;
+enum R_IA64_LTOFF_FPTR32MSB = 0x54;
+enum R_IA64_LTOFF_FPTR32LSB = 0x55;
+enum R_IA64_LTOFF_FPTR64MSB = 0x56;
+enum R_IA64_LTOFF_FPTR64LSB = 0x57;
+enum R_IA64_SEGREL32MSB = 0x5c;
+enum R_IA64_SEGREL32LSB = 0x5d;
+enum R_IA64_SEGREL64MSB = 0x5e;
+enum R_IA64_SEGREL64LSB = 0x5f;
+enum R_IA64_SECREL32MSB = 0x64;
+enum R_IA64_SECREL32LSB = 0x65;
+enum R_IA64_SECREL64MSB = 0x66;
+enum R_IA64_SECREL64LSB = 0x67;
+enum R_IA64_REL32MSB = 0x6c;
+enum R_IA64_REL32LSB = 0x6d;
+enum R_IA64_REL64MSB = 0x6e;
+enum R_IA64_REL64LSB = 0x6f;
+enum R_IA64_LTV32MSB = 0x74;
+enum R_IA64_LTV32LSB = 0x75;
+enum R_IA64_LTV64MSB = 0x76;
+enum R_IA64_LTV64LSB = 0x77;
+enum R_IA64_PCREL21BI = 0x79;
+enum R_IA64_PCREL22 = 0x7a;
+enum R_IA64_PCREL64I = 0x7b;
+enum R_IA64_IPLTMSB = 0x80;
+enum R_IA64_IPLTLSB = 0x81;
+enum R_IA64_COPY = 0x84;
+enum R_IA64_SUB = 0x85;
+enum R_IA64_LTOFF22X = 0x86;
+enum R_IA64_LDXMOV = 0x87;
+enum R_IA64_TPREL14 = 0x91;
+enum R_IA64_TPREL22 = 0x92;
+enum R_IA64_TPREL64I = 0x93;
+enum R_IA64_TPREL64MSB = 0x96;
+enum R_IA64_TPREL64LSB = 0x97;
+enum R_IA64_LTOFF_TPREL22 = 0x9a;
+enum R_IA64_DTPMOD64MSB = 0xa6;
+enum R_IA64_DTPMOD64LSB = 0xa7;
+enum R_IA64_LTOFF_DTPMOD22 = 0xaa;
+enum R_IA64_DTPREL14 = 0xb1;
+enum R_IA64_DTPREL22 = 0xb2;
+enum R_IA64_DTPREL64I = 0xb3;
+enum R_IA64_DTPREL32MSB = 0xb4;
+enum R_IA64_DTPREL32LSB = 0xb5;
+enum R_IA64_DTPREL64MSB = 0xb6;
+enum R_IA64_DTPREL64LSB = 0xb7;
+enum R_IA64_LTOFF_DTPREL22 = 0xba;
+enum EF_SH_MACH_MASK = 0x1f;
+enum EF_SH_UNKNOWN = 0x0;
+enum EF_SH1 = 0x1;
+enum EF_SH2 = 0x2;
+enum EF_SH3 = 0x3;
+enum EF_SH_DSP = 0x4;
+enum EF_SH3_DSP = 0x5;
+enum EF_SH4AL_DSP = 0x6;
+enum EF_SH3E = 0x8;
+enum EF_SH4 = 0x9;
+enum EF_SH2E = 0xb;
+enum EF_SH4A = 0xc;
+enum EF_SH2A = 0xd;
+enum EF_SH4_NOFPU = 0x10;
+enum EF_SH4A_NOFPU = 0x11;
+enum EF_SH4_NOMMU_NOFPU = 0x12;
+enum EF_SH2A_NOFPU = 0x13;
+enum EF_SH3_NOMMU = 0x14;
+enum EF_SH2A_SH4_NOFPU = 0x15;
+enum EF_SH2A_SH3_NOFPU = 0x16;
+enum EF_SH2A_SH4 = 0x17;
+enum EF_SH2A_SH3E = 0x18;
+enum R_SH_NONE = 0;
+enum R_SH_DIR32 = 1;
+enum R_SH_REL32 = 2;
+enum R_SH_DIR8WPN = 3;
+enum R_SH_IND12W = 4;
+enum R_SH_DIR8WPL = 5;
+enum R_SH_DIR8WPZ = 6;
+enum R_SH_DIR8BP = 7;
+enum R_SH_DIR8W = 8;
+enum R_SH_DIR8L = 9;
+enum R_SH_SWITCH16 = 25;
+enum R_SH_SWITCH32 = 26;
+enum R_SH_USES = 27;
+enum R_SH_COUNT = 28;
+enum R_SH_ALIGN = 29;
+enum R_SH_CODE = 30;
+enum R_SH_DATA = 31;
+enum R_SH_LABEL = 32;
+enum R_SH_SWITCH8 = 33;
+enum R_SH_GNU_VTINHERIT = 34;
+enum R_SH_GNU_VTENTRY = 35;
+enum R_SH_TLS_GD_32 = 144;
+enum R_SH_TLS_LD_32 = 145;
+enum R_SH_TLS_LDO_32 = 146;
+enum R_SH_TLS_IE_32 = 147;
+enum R_SH_TLS_LE_32 = 148;
+enum R_SH_TLS_DTPMOD32 = 149;
+enum R_SH_TLS_DTPOFF32 = 150;
+enum R_SH_TLS_TPOFF32 = 151;
+enum R_SH_GOT32 = 160;
+enum R_SH_PLT32 = 161;
+enum R_SH_COPY = 162;
+enum R_SH_GLOB_DAT = 163;
+enum R_SH_JMP_SLOT = 164;
+enum R_SH_RELATIVE = 165;
+enum R_SH_GOTOFF = 166;
+enum R_SH_GOTPC = 167;
+enum R_SH_NUM = 256;
+
+enum EF_S390_HIGH_GPRS = 0x00000001;
+
+enum R_390_NONE = 0;
+enum R_390_8 = 1;
+enum R_390_12 = 2;
+enum R_390_16 = 3;
+enum R_390_32 = 4;
+enum R_390_PC32 = 5;
+enum R_390_GOT12 = 6;
+enum R_390_GOT32 = 7;
+enum R_390_PLT32 = 8;
+enum R_390_COPY = 9;
+enum R_390_GLOB_DAT = 10;
+enum R_390_JMP_SLOT = 11;
+enum R_390_RELATIVE = 12;
+enum R_390_GOTOFF32 = 13;
+enum R_390_GOTPC = 14;
+enum R_390_GOT16 = 15;
+enum R_390_PC16 = 16;
+enum R_390_PC16DBL = 17;
+enum R_390_PLT16DBL = 18;
+enum R_390_PC32DBL = 19;
+enum R_390_PLT32DBL = 20;
+enum R_390_GOTPCDBL = 21;
+enum R_390_64 = 22;
+enum R_390_PC64 = 23;
+enum R_390_GOT64 = 24;
+enum R_390_PLT64 = 25;
+enum R_390_GOTENT = 26;
+enum R_390_GOTOFF16 = 27;
+enum R_390_GOTOFF64 = 28;
+enum R_390_GOTPLT12 = 29;
+enum R_390_GOTPLT16 = 30;
+enum R_390_GOTPLT32 = 31;
+enum R_390_GOTPLT64 = 32;
+enum R_390_GOTPLTENT = 33;
+enum R_390_PLTOFF16 = 34;
+enum R_390_PLTOFF32 = 35;
+enum R_390_PLTOFF64 = 36;
+enum R_390_TLS_LOAD = 37;
+enum R_390_TLS_GDCALL = 38;
+enum R_390_TLS_LDCALL = 39;
+enum R_390_TLS_GD32 = 40;
+enum R_390_TLS_GD64 = 41;
+enum R_390_TLS_GOTIE12 = 42;
+enum R_390_TLS_GOTIE32 = 43;
+enum R_390_TLS_GOTIE64 = 44;
+enum R_390_TLS_LDM32 = 45;
+enum R_390_TLS_LDM64 = 46;
+enum R_390_TLS_IE32 = 47;
+enum R_390_TLS_IE64 = 48;
+enum R_390_TLS_IEENT = 49;
+enum R_390_TLS_LE32 = 50;
+enum R_390_TLS_LE64 = 51;
+enum R_390_TLS_LDO32 = 52;
+enum R_390_TLS_LDO64 = 53;
+enum R_390_TLS_DTPMOD = 54;
+enum R_390_TLS_DTPOFF = 55;
+enum R_390_TLS_TPOFF = 56;
+enum R_390_20 = 57;
+enum R_390_GOT20 = 58;
+enum R_390_GOTPLT20 = 59;
+enum R_390_TLS_GOTIE20 = 60;
+enum R_390_IRELATIVE = 61;
+enum R_390_NUM = 62;
+enum R_CRIS_NONE = 0;
+enum R_CRIS_8 = 1;
+enum R_CRIS_16 = 2;
+enum R_CRIS_32 = 3;
+enum R_CRIS_8_PCREL = 4;
+enum R_CRIS_16_PCREL = 5;
+enum R_CRIS_32_PCREL = 6;
+enum R_CRIS_GNU_VTINHERIT = 7;
+enum R_CRIS_GNU_VTENTRY = 8;
+enum R_CRIS_COPY = 9;
+enum R_CRIS_GLOB_DAT = 10;
+enum R_CRIS_JUMP_SLOT = 11;
+enum R_CRIS_RELATIVE = 12;
+enum R_CRIS_16_GOT = 13;
+enum R_CRIS_32_GOT = 14;
+enum R_CRIS_16_GOTPLT = 15;
+enum R_CRIS_32_GOTPLT = 16;
+enum R_CRIS_32_GOTREL = 17;
+enum R_CRIS_32_PLT_GOTREL = 18;
+enum R_CRIS_32_PLT_PCREL = 19;
+
+enum R_CRIS_NUM = 20;
+enum R_X86_64_NONE = 0;
+enum R_X86_64_64 = 1;
+enum R_X86_64_PC32 = 2;
+enum R_X86_64_GOT32 = 3;
+enum R_X86_64_PLT32 = 4;
+enum R_X86_64_COPY = 5;
+enum R_X86_64_GLOB_DAT = 6;
+enum R_X86_64_JUMP_SLOT = 7;
+enum R_X86_64_RELATIVE = 8;
+enum R_X86_64_GOTPCREL = 9;
+enum R_X86_64_32 = 10;
+enum R_X86_64_32S = 11;
+enum R_X86_64_16 = 12;
+enum R_X86_64_PC16 = 13;
+enum R_X86_64_8 = 14;
+enum R_X86_64_PC8 = 15;
+enum R_X86_64_DTPMOD64 = 16;
+enum R_X86_64_DTPOFF64 = 17;
+enum R_X86_64_TPOFF64 = 18;
+enum R_X86_64_TLSGD = 19;
+enum R_X86_64_TLSLD = 20;
+enum R_X86_64_DTPOFF32 = 21;
+enum R_X86_64_GOTTPOFF = 22;
+enum R_X86_64_TPOFF32 = 23;
+enum R_X86_64_PC64 = 24;
+enum R_X86_64_GOTOFF64 = 25;
+enum R_X86_64_GOTPC32 = 26;
+enum R_X86_64_GOT64 = 27;
+enum R_X86_64_GOTPCREL64 = 28;
+enum R_X86_64_GOTPC64 = 29;
+enum R_X86_64_GOTPLT64 = 30;
+enum R_X86_64_PLTOFF64 = 31;
+enum R_X86_64_SIZE32 = 32;
+enum R_X86_64_SIZE64 = 33;
+enum R_X86_64_GOTPC32_TLSDESC = 34;
+enum R_X86_64_TLSDESC_CALL = 35;
+enum R_X86_64_TLSDESC = 36;
+enum R_X86_64_IRELATIVE = 37;
+enum R_X86_64_RELATIVE64 = 38;
+
+enum R_X86_64_NUM = 39;
+enum R_MN10300_NONE = 0;
+enum R_MN10300_32 = 1;
+enum R_MN10300_16 = 2;
+enum R_MN10300_8 = 3;
+enum R_MN10300_PCREL32 = 4;
+enum R_MN10300_PCREL16 = 5;
+enum R_MN10300_PCREL8 = 6;
+enum R_MN10300_GNU_VTINHERIT = 7;
+enum R_MN10300_GNU_VTENTRY = 8;
+enum R_MN10300_24 = 9;
+enum R_MN10300_GOTPC32 = 10;
+enum R_MN10300_GOTPC16 = 11;
+enum R_MN10300_GOTOFF32 = 12;
+enum R_MN10300_GOTOFF24 = 13;
+enum R_MN10300_GOTOFF16 = 14;
+enum R_MN10300_PLT32 = 15;
+enum R_MN10300_PLT16 = 16;
+enum R_MN10300_GOT32 = 17;
+enum R_MN10300_GOT24 = 18;
+enum R_MN10300_GOT16 = 19;
+enum R_MN10300_COPY = 20;
+enum R_MN10300_GLOB_DAT = 21;
+enum R_MN10300_JMP_SLOT = 22;
+enum R_MN10300_RELATIVE = 23;
+enum R_MN10300_TLS_GD = 24;
+enum R_MN10300_TLS_LD = 25;
+enum R_MN10300_TLS_LDO = 26;
+enum R_MN10300_TLS_GOTIE = 27;
+enum R_MN10300_TLS_IE = 28;
+enum R_MN10300_TLS_LE = 29;
+enum R_MN10300_TLS_DTPMOD = 30;
+enum R_MN10300_TLS_DTPOFF = 31;
+enum R_MN10300_TLS_TPOFF = 32;
+enum R_MN10300_SYM_DIFF = 33;
+enum R_MN10300_ALIGN = 34;
+enum R_MN10300_NUM = 35;
+enum R_M32R_NONE = 0;
+enum R_M32R_16 = 1;
+enum R_M32R_32 = 2;
+enum R_M32R_24 = 3;
+enum R_M32R_10_PCREL = 4;
+enum R_M32R_18_PCREL = 5;
+enum R_M32R_26_PCREL = 6;
+enum R_M32R_HI16_ULO = 7;
+enum R_M32R_HI16_SLO = 8;
+enum R_M32R_LO16 = 9;
+enum R_M32R_SDA16 = 10;
+enum R_M32R_GNU_VTINHERIT = 11;
+enum R_M32R_GNU_VTENTRY = 12;
+enum R_M32R_16_RELA = 33;
+enum R_M32R_32_RELA = 34;
+enum R_M32R_24_RELA = 35;
+enum R_M32R_10_PCREL_RELA = 36;
+enum R_M32R_18_PCREL_RELA = 37;
+enum R_M32R_26_PCREL_RELA = 38;
+enum R_M32R_HI16_ULO_RELA = 39;
+enum R_M32R_HI16_SLO_RELA = 40;
+enum R_M32R_LO16_RELA = 41;
+enum R_M32R_SDA16_RELA = 42;
+enum R_M32R_RELA_GNU_VTINHERIT = 43;
+enum R_M32R_RELA_GNU_VTENTRY = 44;
+enum R_M32R_REL32 = 45;
+
+enum R_M32R_GOT24 = 48;
+enum R_M32R_26_PLTREL = 49;
+enum R_M32R_COPY = 50;
+enum R_M32R_GLOB_DAT = 51;
+enum R_M32R_JMP_SLOT = 52;
+enum R_M32R_RELATIVE = 53;
+enum R_M32R_GOTOFF = 54;
+enum R_M32R_GOTPC24 = 55;
+enum R_M32R_GOT16_HI_ULO = 56;
+enum R_M32R_GOT16_HI_SLO = 57;
+enum R_M32R_GOT16_LO = 58;
+enum R_M32R_GOTPC_HI_ULO = 59;
+enum R_M32R_GOTPC_HI_SLO = 60;
+enum R_M32R_GOTPC_LO = 61;
+enum R_M32R_GOTOFF_HI_ULO = 62;
+enum R_M32R_GOTOFF_HI_SLO = 63;
+enum R_M32R_GOTOFF_LO = 64;
+enum R_M32R_NUM = 256;
+enum R_TILEPRO_NONE = 0;
+enum R_TILEPRO_32 = 1;
+enum R_TILEPRO_16 = 2;
+enum R_TILEPRO_8 = 3;
+enum R_TILEPRO_32_PCREL = 4;
+enum R_TILEPRO_16_PCREL = 5;
+enum R_TILEPRO_8_PCREL = 6;
+enum R_TILEPRO_LO16 = 7;
+enum R_TILEPRO_HI16 = 8;
+enum R_TILEPRO_HA16 = 9;
+enum R_TILEPRO_COPY = 10;
+enum R_TILEPRO_GLOB_DAT = 11;
+enum R_TILEPRO_JMP_SLOT = 12;
+enum R_TILEPRO_RELATIVE = 13;
+enum R_TILEPRO_BROFF_X1 = 14;
+enum R_TILEPRO_JOFFLONG_X1 = 15;
+enum R_TILEPRO_JOFFLONG_X1_PLT = 16;
+enum R_TILEPRO_IMM8_X0 = 17;
+enum R_TILEPRO_IMM8_Y0 = 18;
+enum R_TILEPRO_IMM8_X1 = 19;
+enum R_TILEPRO_IMM8_Y1 = 20;
+enum R_TILEPRO_MT_IMM15_X1 = 21;
+enum R_TILEPRO_MF_IMM15_X1 = 22;
+enum R_TILEPRO_IMM16_X0 = 23;
+enum R_TILEPRO_IMM16_X1 = 24;
+enum R_TILEPRO_IMM16_X0_LO = 25;
+enum R_TILEPRO_IMM16_X1_LO = 26;
+enum R_TILEPRO_IMM16_X0_HI = 27;
+enum R_TILEPRO_IMM16_X1_HI = 28;
+enum R_TILEPRO_IMM16_X0_HA = 29;
+enum R_TILEPRO_IMM16_X1_HA = 30;
+enum R_TILEPRO_IMM16_X0_PCREL = 31;
+enum R_TILEPRO_IMM16_X1_PCREL = 32;
+enum R_TILEPRO_IMM16_X0_LO_PCREL = 33;
+enum R_TILEPRO_IMM16_X1_LO_PCREL = 34;
+enum R_TILEPRO_IMM16_X0_HI_PCREL = 35;
+enum R_TILEPRO_IMM16_X1_HI_PCREL = 36;
+enum R_TILEPRO_IMM16_X0_HA_PCREL = 37;
+enum R_TILEPRO_IMM16_X1_HA_PCREL = 38;
+enum R_TILEPRO_IMM16_X0_GOT = 39;
+enum R_TILEPRO_IMM16_X1_GOT = 40;
+enum R_TILEPRO_IMM16_X0_GOT_LO = 41;
+enum R_TILEPRO_IMM16_X1_GOT_LO = 42;
+enum R_TILEPRO_IMM16_X0_GOT_HI = 43;
+enum R_TILEPRO_IMM16_X1_GOT_HI = 44;
+enum R_TILEPRO_IMM16_X0_GOT_HA = 45;
+enum R_TILEPRO_IMM16_X1_GOT_HA = 46;
+enum R_TILEPRO_MMSTART_X0 = 47;
+enum R_TILEPRO_MMEND_X0 = 48;
+enum R_TILEPRO_MMSTART_X1 = 49;
+enum R_TILEPRO_MMEND_X1 = 50;
+enum R_TILEPRO_SHAMT_X0 = 51;
+enum R_TILEPRO_SHAMT_X1 = 52;
+enum R_TILEPRO_SHAMT_Y0 = 53;
+enum R_TILEPRO_SHAMT_Y1 = 54;
+enum R_TILEPRO_DEST_IMM8_X1 = 55;
+enum R_TILEPRO_TLS_GD_CALL = 60;
+enum R_TILEPRO_IMM8_X0_TLS_GD_ADD = 61;
+enum R_TILEPRO_IMM8_X1_TLS_GD_ADD = 62;
+enum R_TILEPRO_IMM8_Y0_TLS_GD_ADD = 63;
+enum R_TILEPRO_IMM8_Y1_TLS_GD_ADD = 64;
+enum R_TILEPRO_TLS_IE_LOAD = 65;
+enum R_TILEPRO_IMM16_X0_TLS_GD = 66;
+enum R_TILEPRO_IMM16_X1_TLS_GD = 67;
+enum R_TILEPRO_IMM16_X0_TLS_GD_LO = 68;
+enum R_TILEPRO_IMM16_X1_TLS_GD_LO = 69;
+enum R_TILEPRO_IMM16_X0_TLS_GD_HI = 70;
+enum R_TILEPRO_IMM16_X1_TLS_GD_HI = 71;
+enum R_TILEPRO_IMM16_X0_TLS_GD_HA = 72;
+enum R_TILEPRO_IMM16_X1_TLS_GD_HA = 73;
+enum R_TILEPRO_IMM16_X0_TLS_IE = 74;
+enum R_TILEPRO_IMM16_X1_TLS_IE = 75;
+enum R_TILEPRO_IMM16_X0_TLS_IE_LO = 76;
+enum R_TILEPRO_IMM16_X1_TLS_IE_LO = 77;
+enum R_TILEPRO_IMM16_X0_TLS_IE_HI = 78;
+enum R_TILEPRO_IMM16_X1_TLS_IE_HI = 79;
+enum R_TILEPRO_IMM16_X0_TLS_IE_HA = 80;
+enum R_TILEPRO_IMM16_X1_TLS_IE_HA = 81;
+enum R_TILEPRO_TLS_DTPMOD32 = 82;
+enum R_TILEPRO_TLS_DTPOFF32 = 83;
+enum R_TILEPRO_TLS_TPOFF32 = 84;
+enum R_TILEPRO_IMM16_X0_TLS_LE = 85;
+enum R_TILEPRO_IMM16_X1_TLS_LE = 86;
+enum R_TILEPRO_IMM16_X0_TLS_LE_LO = 87;
+enum R_TILEPRO_IMM16_X1_TLS_LE_LO = 88;
+enum R_TILEPRO_IMM16_X0_TLS_LE_HI = 89;
+enum R_TILEPRO_IMM16_X1_TLS_LE_HI = 90;
+enum R_TILEPRO_IMM16_X0_TLS_LE_HA = 91;
+enum R_TILEPRO_IMM16_X1_TLS_LE_HA = 92;
+
+enum R_TILEPRO_GNU_VTINHERIT = 128;
+enum R_TILEPRO_GNU_VTENTRY = 129;
+
+enum R_TILEPRO_NUM = 130;
+enum R_TILEGX_NONE = 0;
+enum R_TILEGX_64 = 1;
+enum R_TILEGX_32 = 2;
+enum R_TILEGX_16 = 3;
+enum R_TILEGX_8 = 4;
+enum R_TILEGX_64_PCREL = 5;
+enum R_TILEGX_32_PCREL = 6;
+enum R_TILEGX_16_PCREL = 7;
+enum R_TILEGX_8_PCREL = 8;
+enum R_TILEGX_HW0 = 9;
+enum R_TILEGX_HW1 = 10;
+enum R_TILEGX_HW2 = 11;
+enum R_TILEGX_HW3 = 12;
+enum R_TILEGX_HW0_LAST = 13;
+enum R_TILEGX_HW1_LAST = 14;
+enum R_TILEGX_HW2_LAST = 15;
+enum R_TILEGX_COPY = 16;
+enum R_TILEGX_GLOB_DAT = 17;
+enum R_TILEGX_JMP_SLOT = 18;
+enum R_TILEGX_RELATIVE = 19;
+enum R_TILEGX_BROFF_X1 = 20;
+enum R_TILEGX_JUMPOFF_X1 = 21;
+enum R_TILEGX_JUMPOFF_X1_PLT = 22;
+enum R_TILEGX_IMM8_X0 = 23;
+enum R_TILEGX_IMM8_Y0 = 24;
+enum R_TILEGX_IMM8_X1 = 25;
+enum R_TILEGX_IMM8_Y1 = 26;
+enum R_TILEGX_DEST_IMM8_X1 = 27;
+enum R_TILEGX_MT_IMM14_X1 = 28;
+enum R_TILEGX_MF_IMM14_X1 = 29;
+enum R_TILEGX_MMSTART_X0 = 30;
+enum R_TILEGX_MMEND_X0 = 31;
+enum R_TILEGX_SHAMT_X0 = 32;
+enum R_TILEGX_SHAMT_X1 = 33;
+enum R_TILEGX_SHAMT_Y0 = 34;
+enum R_TILEGX_SHAMT_Y1 = 35;
+enum R_TILEGX_IMM16_X0_HW0 = 36;
+enum R_TILEGX_IMM16_X1_HW0 = 37;
+enum R_TILEGX_IMM16_X0_HW1 = 38;
+enum R_TILEGX_IMM16_X1_HW1 = 39;
+enum R_TILEGX_IMM16_X0_HW2 = 40;
+enum R_TILEGX_IMM16_X1_HW2 = 41;
+enum R_TILEGX_IMM16_X0_HW3 = 42;
+enum R_TILEGX_IMM16_X1_HW3 = 43;
+enum R_TILEGX_IMM16_X0_HW0_LAST = 44;
+enum R_TILEGX_IMM16_X1_HW0_LAST = 45;
+enum R_TILEGX_IMM16_X0_HW1_LAST = 46;
+enum R_TILEGX_IMM16_X1_HW1_LAST = 47;
+enum R_TILEGX_IMM16_X0_HW2_LAST = 48;
+enum R_TILEGX_IMM16_X1_HW2_LAST = 49;
+enum R_TILEGX_IMM16_X0_HW0_PCREL = 50;
+enum R_TILEGX_IMM16_X1_HW0_PCREL = 51;
+enum R_TILEGX_IMM16_X0_HW1_PCREL = 52;
+enum R_TILEGX_IMM16_X1_HW1_PCREL = 53;
+enum R_TILEGX_IMM16_X0_HW2_PCREL = 54;
+enum R_TILEGX_IMM16_X1_HW2_PCREL = 55;
+enum R_TILEGX_IMM16_X0_HW3_PCREL = 56;
+enum R_TILEGX_IMM16_X1_HW3_PCREL = 57;
+enum R_TILEGX_IMM16_X0_HW0_LAST_PCREL = 58;
+enum R_TILEGX_IMM16_X1_HW0_LAST_PCREL = 59;
+enum R_TILEGX_IMM16_X0_HW1_LAST_PCREL = 60;
+enum R_TILEGX_IMM16_X1_HW1_LAST_PCREL = 61;
+enum R_TILEGX_IMM16_X0_HW2_LAST_PCREL = 62;
+enum R_TILEGX_IMM16_X1_HW2_LAST_PCREL = 63;
+enum R_TILEGX_IMM16_X0_HW0_GOT = 64;
+enum R_TILEGX_IMM16_X1_HW0_GOT = 65;
+enum R_TILEGX_IMM16_X0_HW0_PLT_PCREL = 66;
+enum R_TILEGX_IMM16_X1_HW0_PLT_PCREL = 67;
+enum R_TILEGX_IMM16_X0_HW1_PLT_PCREL = 68;
+enum R_TILEGX_IMM16_X1_HW1_PLT_PCREL = 69;
+enum R_TILEGX_IMM16_X0_HW2_PLT_PCREL = 70;
+enum R_TILEGX_IMM16_X1_HW2_PLT_PCREL = 71;
+enum R_TILEGX_IMM16_X0_HW0_LAST_GOT = 72;
+enum R_TILEGX_IMM16_X1_HW0_LAST_GOT = 73;
+enum R_TILEGX_IMM16_X0_HW1_LAST_GOT = 74;
+enum R_TILEGX_IMM16_X1_HW1_LAST_GOT = 75;
+enum R_TILEGX_IMM16_X0_HW3_PLT_PCREL = 76;
+enum R_TILEGX_IMM16_X1_HW3_PLT_PCREL = 77;
+enum R_TILEGX_IMM16_X0_HW0_TLS_GD = 78;
+enum R_TILEGX_IMM16_X1_HW0_TLS_GD = 79;
+enum R_TILEGX_IMM16_X0_HW0_TLS_LE = 80;
+enum R_TILEGX_IMM16_X1_HW0_TLS_LE = 81;
+enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE = 82;
+enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE = 83;
+enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE = 84;
+enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE = 85;
+enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD = 86;
+enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD = 87;
+enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD = 88;
+enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD = 89;
+enum R_TILEGX_IMM16_X0_HW0_TLS_IE = 92;
+enum R_TILEGX_IMM16_X1_HW0_TLS_IE = 93;
+enum R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL = 94;
+enum R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL = 95;
+enum R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL = 96;
+enum R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL = 97;
+enum R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL = 98;
+enum R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL = 99;
+enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE = 100;
+enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE = 101;
+enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE = 102;
+enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE = 103;
+enum R_TILEGX_TLS_DTPMOD64 = 106;
+enum R_TILEGX_TLS_DTPOFF64 = 107;
+enum R_TILEGX_TLS_TPOFF64 = 108;
+enum R_TILEGX_TLS_DTPMOD32 = 109;
+enum R_TILEGX_TLS_DTPOFF32 = 110;
+enum R_TILEGX_TLS_TPOFF32 = 111;
+enum R_TILEGX_TLS_GD_CALL = 112;
+enum R_TILEGX_IMM8_X0_TLS_GD_ADD = 113;
+enum R_TILEGX_IMM8_X1_TLS_GD_ADD = 114;
+enum R_TILEGX_IMM8_Y0_TLS_GD_ADD = 115;
+enum R_TILEGX_IMM8_Y1_TLS_GD_ADD = 116;
+enum R_TILEGX_TLS_IE_LOAD = 117;
+enum R_TILEGX_IMM8_X0_TLS_ADD = 118;
+enum R_TILEGX_IMM8_X1_TLS_ADD = 119;
+enum R_TILEGX_IMM8_Y0_TLS_ADD = 120;
+enum R_TILEGX_IMM8_Y1_TLS_ADD = 121;
+
+enum R_TILEGX_GNU_VTINHERIT = 128;
+enum R_TILEGX_GNU_VTENTRY = 129;
+
+enum R_TILEGX_NUM = 130;
diff --git a/libphobos/libdruntime/core/sys/freebsd/sys/elf32.d b/libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
index 63cc4f9..134cdf0 100644
--- a/libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
+++ b/libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
@@ -13,108 +13,13 @@ nothrow:
import core.stdc.stdint;
public import core.sys.freebsd.sys.elf_common;
-alias uint16_t Elf32_Half;
-alias uint32_t Elf32_Word;
-alias int32_t Elf32_Sword;
alias uint64_t Elf32_Lword;
-alias uint32_t Elf32_Addr;
-alias uint32_t Elf32_Off;
alias Elf32_Word Elf32_Hashelt;
alias Elf32_Word Elf32_Size;
alias Elf32_Sword Elf32_Ssize;
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf32_Phdr
-{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-}
-
-struct Elf32_Dyn
-{
- Elf32_Sword d_tag;
- union _d_un
- {
- Elf32_Word d_val;
- Elf32_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-extern (D)
-{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-}
-
alias Elf_Note Elf32_Nhdr;
-struct Elf32_Move
-{
- Elf32_Lword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-extern (D)
-{
- auto ELF32_M_SYM(I)(I info) { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf32_Cap
{
Elf32_Word c_tag;
@@ -125,63 +30,7 @@ struct Elf32_Cap
} _c_un c_un;
}
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Half st_shndx;
-}
-
extern (D)
{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
-
-struct Elf32_Verdef
-{
- Elf32_Half vd_version;
- Elf32_Half vd_flags;
- Elf32_Half vd_ndx;
- Elf32_Half vd_cnt;
- Elf32_Word vd_hash;
- Elf32_Word vd_aux;
- Elf32_Word vd_next;
-}
-
-struct Elf32_Verdaux
-{
- Elf32_Word vda_name;
- Elf32_Word vda_next;
-}
-
-struct Elf32_Verneed
-{
- Elf32_Half vn_version;
- Elf32_Half vn_cnt;
- Elf32_Word vn_file;
- Elf32_Word vn_aux;
- Elf32_Word vn_next;
-}
-
-struct Elf32_Vernaux
-{
- Elf32_Word vna_hash;
- Elf32_Half vna_flags;
- Elf32_Half vna_other;
- Elf32_Word vna_name;
- Elf32_Word vna_next;
-}
-
-alias Elf32_Half Elf32_Versym;
-
-struct Elf32_Syminfo
-{
- Elf32_Half si_boundto;
- Elf32_Half si_flags;
-}
diff --git a/libphobos/libdruntime/core/sys/freebsd/sys/elf64.d b/libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
index 8c63e04..6952821 100644
--- a/libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
+++ b/libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
@@ -13,100 +13,13 @@ nothrow:
import core.stdc.stdint;
public import core.sys.freebsd.sys.elf_common;
-alias uint16_t Elf64_Half;
-alias uint32_t Elf64_Word;
-alias int32_t Elf64_Sword;
alias uint64_t Elf64_Lword;
-alias uint64_t Elf64_Xword;
-alias int64_t Elf64_Sxword;
-alias uint64_t Elf64_Addr;
-alias uint64_t Elf64_Off;
alias Elf64_Word Elf64_Hashelt;
alias Elf64_Xword Elf64_Size;
alias Elf64_Sxword Elf64_Ssize;
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-struct Elf64_Lib
-{
- Elf64_Word l_name;
- Elf64_Word l_time_stamp;
- Elf64_Word l_checksum;
- Elf64_Word l_version;
- Elf64_Word l_flags;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-struct Elf64_Phdr
-{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
-}
-
-struct Elf64_Dyn
-{
- Elf64_Sxword d_tag;
- union _d_un
- {
- Elf64_Xword d_val;
- Elf64_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
extern (D)
{
- auto ELF64_R_SYM(I)(I i) { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type & 0xffffffff); }
-
auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; }
auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; }
auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; }
@@ -114,22 +27,6 @@ extern (D)
alias Elf_Note Elf64_Nhdr;
-struct Elf64_Move
-{
- Elf64_Lword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-
-extern (D)
-{
- auto ELF64_M_SYM(I)(I info) { return info >> 8; }
- auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF64_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf64_Cap
{
Elf64_Xword c_tag;
@@ -140,63 +37,7 @@ struct Elf64_Cap
} _c_un c_un;
}
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
extern (D)
{
- auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF64_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF64_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
-
-struct Elf64_Verdef
-{
- Elf64_Half vd_version;
- Elf64_Half vd_flags;
- Elf64_Half vd_ndx;
- Elf64_Half vd_cnt;
- Elf64_Word vd_hash;
- Elf64_Word vd_aux;
- Elf64_Word vd_next;
-}
-
-struct Elf64_Verdaux
-{
- Elf64_Word vda_name;
- Elf64_Word vda_next;
-}
-
-struct Elf64_Verneed
-{
- Elf64_Half vn_version;
- Elf64_Half vn_cnt;
- Elf64_Word vn_file;
- Elf64_Word vn_aux;
- Elf64_Word vn_next;
-}
-
-struct Elf64_Vernaux
-{
- Elf64_Word vna_hash;
- Elf64_Half vna_flags;
- Elf64_Half vna_other;
- Elf64_Word vna_name;
- Elf64_Word vna_next;
-}
-
-alias Elf64_Half Elf64_Versym;
-
-struct Elf64_Syminfo
-{
- Elf64_Half si_boundto;
- Elf64_Half si_flags;
-}
diff --git a/libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d b/libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
index 455de95..05e78bf 100644
--- a/libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
+++ b/libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
@@ -11,6 +11,7 @@ pure:
nothrow:
import core.stdc.stdint;
+public import core.sys.elf;
struct Elf_Note
{
@@ -27,57 +28,7 @@ struct Elf_GNU_Hash_Header
uint32_t gh_shift2;
}
-enum EI_MAG0 = 0;
-enum EI_MAG1 = 1;
-enum EI_MAG2 = 2;
-enum EI_MAG3 = 3;
-enum EI_CLASS = 4;
-enum EI_DATA = 5;
-enum EI_VERSION = 6;
-enum EI_OSABI = 7;
-enum EI_ABIVERSION = 8;
enum OLD_EI_BRAND = 8;
-enum EI_PAD = 9;
-enum EI_NIDENT = 16;
-
-enum ELFMAG0 = 0x7f;
-enum ELFMAG1 = 'E';
-enum ELFMAG2 = 'L';
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = 0;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_LINUX = 3;
-enum ELFOSABI_HURD = 4;
-enum ELFOSABI_86OPEN = 5;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_MONTEREY = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_OPENVMS = 13;
-enum ELFOSABI_NSK = 14;
-enum ELFOSABI_AROS = 15;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
extern (D)
{
@@ -87,306 +38,28 @@ extern (D)
ehdr.e_ident[EI_MAG3] == ELFMAG3; }
}
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_LOOS = 0xfe00;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-enum EM_PARISC = 15;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_X86_64 = 62;
-enum EM_AMD64 = 62;
-enum EM_PDSP = 63;
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_VIDEOCORE = 95;
-enum EM_TMM_GPP = 96;
-enum EM_NS32K = 97;
-enum EM_TPC = 98;
-enum EM_SNP1K = 99;
-enum EM_ST200 = 100;
-enum EM_IP2K = 101;
-enum EM_MAX = 102;
-enum EM_CR = 103;
-enum EM_F2MC16 = 104;
-enum EM_MSP430 = 105;
-enum EM_BLACKFIN = 106;
-enum EM_SE_C33 = 107;
-enum EM_SEP = 108;
-enum EM_ARCA = 109;
-enum EM_UNICORE = 110;
-
enum EM_486 = 6;
enum EM_MIPS_RS4_BE = 10;
enum EM_ALPHA_STD = 41;
-enum EM_ALPHA = 0x9026;
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-enum SHT_LOOS = 0x60000000;
-enum SHT_LOSUNW = 0x6ffffff4;
enum SHT_SUNW_dof = 0x6ffffff4;
enum SHT_SUNW_cap = 0x6ffffff5;
enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
-enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
-enum SHT_SUNW_DEBUG = 0x6ffffff9;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
enum SHT_SUNW_verdef = 0x6ffffffd;
-enum SHT_GNU_verdef = 0x6ffffffd;
enum SHT_SUNW_verneed = 0x6ffffffe;
-enum SHT_GNU_verneed = 0x6ffffffe;
enum SHT_SUNW_versym = 0x6fffffff;
-enum SHT_GNU_versym = 0x6fffffff;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_LOPROC = 0x70000000;
-enum SHT_AMD64_UNWIND = 0x70000001;
-enum SHT_ARM_EXIDX = 0x70000001;
-enum SHT_ARM_PREEMPTMAP = 0x70000002;
-enum SHT_ARM_ATTRIBUTES = 0x70000003;
-enum SHT_ARM_DEBUGOVERLAY = 0x70000004;
-enum SHT_ARM_OVERLAYSECTION = 0x70000005;
-enum SHT_MIPS_REGINFO = 0x70000006;
-enum SHT_MIPS_OPTIONS = 0x7000000d;
-enum SHT_MIPS_DWARF = 0x7000001e;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0x8fffffff;
-enum SHF_WRITE = (1 << 0);
-enum SHF_ALLOC = (1 << 1);
-enum SHF_EXECINSTR = (1 << 2);
-enum SHF_MERGE = (1 << 4);
-enum SHF_STRINGS = (1 << 5);
-enum SHF_INFO_LINK = (1 << 6);
-enum SHF_LINK_ORDER = (1 << 7);
-enum SHF_OS_NONCONFORMING = (1 << 8);
-enum SHF_GROUP = (1 << 9);
-enum SHF_TLS = (1 << 10);
-enum SHF_COMPRESSED = (1 << 11);
-enum SHF_MASKOS = 0x0ff00000;
-enum SHF_MASKPROC = 0xf0000000;
-
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_LOOS = 0x60000000;
-enum PT_SUNW_UNWIND = 0x6464e550;
-enum PT_GNU_EH_FRAME = 0x6474e550;
-enum PT_GNU_STACK = 0x6474e551;
-enum PT_GNU_RELRO = 0x6474e552;
-enum PT_LOSUNW = 0x6ffffffa;
-enum PT_SUNWBSS = 0x6ffffffa;
-enum PT_SUNWSTACK = 0x6ffffffb;
enum PT_SUNWDTRACE = 0x6ffffffc;
enum PT_SUNWCAP = 0x6ffffffd;
-enum PT_HISUNW = 0x6fffffff;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-
-enum PF_X = (1 << 0);
-enum PF_W = (1 << 1);
-enum PF_R = (1 << 2);
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
-enum PN_XNUM = 0xffff;
-
-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;
-enum DT_RELAENT = 9;
-enum DT_STRSZ = 10;
-enum DT_SYMENT = 11;
-enum DT_INIT = 12;
-enum DT_FINI = 13;
-enum DT_SONAME = 14;
-enum DT_RPATH = 15;
-enum DT_SYMBOLIC = 16;
-enum DT_REL = 17;
-enum DT_RELSZ = 18;
-enum DT_RELENT = 19;
-enum DT_PLTREL = 20;
-enum DT_DEBUG = 21;
-enum DT_TEXTREL = 22;
-enum DT_JMPREL = 23;
-enum DT_BIND_NOW = 24;
-enum DT_INIT_ARRAY = 25;
-enum DT_FINI_ARRAY = 26;
-enum DT_INIT_ARRAYSZ = 27;
-enum DT_FINI_ARRAYSZ = 28;
-enum DT_RUNPATH = 29;
-enum DT_FLAGS = 30;
-enum DT_ENCODING = 32;
-enum DT_PREINIT_ARRAY = 32;
-enum DT_PREINIT_ARRAYSZ = 33;
enum DT_MAXPOSTAGS = 34;
-enum DT_LOOS = 0x6000000d;
enum DT_SUNW_AUXILIARY = 0x6000000d;
enum DT_SUNW_RTLDINF = 0x6000000e;
enum DT_SUNW_FILTER = 0x6000000f;
enum DT_SUNW_CAP = 0x60000010;
-enum DT_HIOS = 0x6ffff000;
-enum DT_VALRNGLO = 0x6ffffd00;
-enum DT_CHECKSUM = 0x6ffffdf8;
-enum DT_PLTPADSZ = 0x6ffffdf9;
-enum DT_MOVEENT = 0x6ffffdfa;
-enum DT_MOVESZ = 0x6ffffdfb;
-enum DT_FEATURE_1 = 0x6ffffdfc;
-enum DT_POSFLAG_1 = 0x6ffffdfd;
-enum DT_SYMINSZ = 0x6ffffdfe;
-enum DT_SYMINENT = 0x6ffffdff;
-enum DT_VALRNGHI = 0x6ffffdff;
-enum DT_ADDRRNGLO = 0x6ffffe00;
-enum DT_GNU_HASH = 0x6ffffef5;
-enum DT_CONFIG = 0x6ffffefa;
-enum DT_DEPAUDIT = 0x6ffffefb;
-enum DT_AUDIT = 0x6ffffefc;
-enum DT_PLTPAD = 0x6ffffefd;
-enum DT_MOVETAB = 0x6ffffefe;
-enum DT_SYMINFO = 0x6ffffeff;
-enum DT_ADDRRNGHI = 0x6ffffeff;
-enum DT_VERSYM = 0x6ffffff0;
-enum DT_RELACOUNT = 0x6ffffff9;
-enum DT_RELCOUNT = 0x6ffffffa;
-enum DT_FLAGS_1 = 0x6ffffffb;
-enum DT_VERDEF = 0x6ffffffc;
-enum DT_VERDEFNUM = 0x6ffffffd;
-enum DT_VERNEED = 0x6ffffffe;
-enum DT_VERNEEDNUM = 0x6fffffff;
-enum DT_LOPROC = 0x70000000;
enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001;
-enum DT_AUXILIARY = 0x7ffffffd;
enum DT_USED = 0x7ffffffe;
-enum DT_FILTER = 0x7fffffff;
-enum DT_HIPROC = 0x7fffffff;
-
-enum DF_ORIGIN = 0x00000001;
-enum DF_SYMBOLIC = 0x00000002;
-enum DF_TEXTREL = 0x00000004;
-enum DF_BIND_NOW = 0x00000008;
-enum DF_STATIC_TLS = 0x00000010;
enum DF_1_BIND_NOW = 0x00000001;
-enum DF_1_GLOBAL = 0x00000002;
-enum DF_1_NODELETE = 0x00000008;
-enum DF_1_LOADFLTR = 0x00000010;
-enum DF_1_NOOPEN = 0x00000040;
-enum DF_1_NODEFLIB = 0x00000800;
enum NT_PRSTATUS = 1;
enum NT_FPREGSET = 2;
@@ -402,55 +75,19 @@ enum NT_PROCSTAT_OSREL = 14;
enum NT_PROCSTAT_PSSTRINGS = 15;
enum NT_PROCSTAT_AUXV = 16;
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOOS = 10;
-enum STB_HIOS = 12;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_GNU_IFUNC = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
-
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
enum STV_EXPORTED = 4;
enum STV_SINGLETON = 5;
enum STV_ELIMINATE = 6;
-enum STN_UNDEF = 0;
-
-enum VER_DEF_CURRENT = 1;
alias VER_NDX VER_DEF_IDX;
-enum VER_FLG_BASE = 0x1;
-enum VER_FLG_WEAK = 0x2;
-
-enum VER_NEED_CURRENT = 1;
enum VER_NEED_WEAK = 32768;
enum VER_NEED_HIDDEN = VER_NDX_HIDDEN;
alias VER_NDX VER_NEED_IDX;
-enum VER_NDX_LOCAL = 0;
-enum VER_NDX_GLOBAL = 1;
enum VER_NDX_GIVEN = 2;
-
enum VER_NDX_HIDDEN = 32768;
+
extern (D)
{
auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
@@ -460,420 +97,28 @@ enum CA_SUNW_NULL = 0;
enum CA_SUNW_HW_1 = 1;
enum CA_SUNW_SF_1 = 2;
-enum SYMINFO_FLG_DIRECT = 0x0001;
-enum SYMINFO_FLG_PASSTHRU = 0x0002;
-enum SYMINFO_FLG_COPY = 0x0004;
-enum SYMINFO_FLG_LAZYLOAD = 0x0008;
enum SYMINFO_FLG_DIRECTBIND = 0x0010;
enum SYMINFO_FLG_NOEXTDIRECT = 0x0020;
enum SYMINFO_FLG_FILTER = 0x0002;
enum SYMINFO_FLG_AUXILIARY = 0x0040;
-enum SYMINFO_BT_SELF = 0xffff;
-enum SYMINFO_BT_PARENT = 0xfffe;
enum SYMINFO_BT_NONE = 0xfffd;
enum SYMINFO_BT_EXTERN = 0xfffc;
-enum SYMINFO_BT_LOWRESERVE = 0xff00;
-
-enum SYMINFO_NONE = 0;
-enum SYMINFO_CURRENT = 1;
-enum SYMINFO_NUM = 2;
-
-enum R_386_NONE = 0;
-enum R_386_32 = 1;
-enum R_386_PC32 = 2;
-enum R_386_GOT32 = 3;
-enum R_386_PLT32 = 4;
-enum R_386_COPY = 5;
-enum R_386_GLOB_DAT = 6;
-enum R_386_JMP_SLOT = 7;
-enum R_386_RELATIVE = 8;
-enum R_386_GOTOFF = 9;
-enum R_386_GOTPC = 10;
-enum R_386_TLS_TPOFF = 14;
-enum R_386_TLS_IE = 15;
-enum R_386_TLS_GOTIE = 16;
-enum R_386_TLS_LE = 17;
-enum R_386_TLS_GD = 18;
-enum R_386_TLS_LDM = 19;
-enum R_386_TLS_GD_32 = 24;
-enum R_386_TLS_GD_PUSH = 25;
-enum R_386_TLS_GD_CALL = 26;
-enum R_386_TLS_GD_POP = 27;
-enum R_386_TLS_LDM_32 = 28;
-enum R_386_TLS_LDM_PUSH = 29;
-enum R_386_TLS_LDM_CALL = 30;
-enum R_386_TLS_LDM_POP = 31;
-enum R_386_TLS_LDO_32 = 32;
-enum R_386_TLS_IE_32 = 33;
-enum R_386_TLS_LE_32 = 34;
-enum R_386_TLS_DTPMOD32 = 35;
-enum R_386_TLS_DTPOFF32 = 36;
-enum R_386_TLS_TPOFF32 = 37;
-enum R_386_IRELATIVE = 42;
-
-enum R_ARM_NONE = 0;
-enum R_ARM_PC24 = 1;
-enum R_ARM_ABS32 = 2;
-enum R_ARM_REL32 = 3;
-enum R_ARM_PC13 = 4;
-enum R_ARM_ABS16 = 5;
-enum R_ARM_ABS12 = 6;
-enum R_ARM_THM_ABS5 = 7;
-enum R_ARM_ABS8 = 8;
-enum R_ARM_SBREL32 = 9;
-enum R_ARM_THM_PC22 = 10;
-enum R_ARM_THM_PC8 = 11;
-enum R_ARM_AMP_VCALL9 = 12;
-enum R_ARM_SWI24 = 13;
-enum R_ARM_THM_SWI8 = 14;
-enum R_ARM_XPC25 = 15;
-enum R_ARM_THM_XPC22 = 16;
-enum R_ARM_TLS_DTPMOD32 = 17;
-enum R_ARM_TLS_DTPOFF32 = 18;
-enum R_ARM_TLS_TPOFF32 = 19;
-enum R_ARM_COPY = 20;
-enum R_ARM_GLOB_DAT = 21;
-enum R_ARM_JUMP_SLOT = 22;
-enum R_ARM_RELATIVE = 23;
-enum R_ARM_GOTOFF = 24;
-enum R_ARM_GOTPC = 25;
-enum R_ARM_GOT32 = 26;
-enum R_ARM_PLT32 = 27;
-enum R_ARM_GNU_VTENTRY = 100;
-enum R_ARM_GNU_VTINHERIT = 101;
-enum R_ARM_RSBREL32 = 250;
-enum R_ARM_THM_RPC22 = 251;
-enum R_ARM_RREL32 = 252;
-enum R_ARM_RABS32 = 253;
-enum R_ARM_RPC24 = 254;
-enum R_ARM_RBASE = 255;
-
-enum R_IA_64_NONE = 0;
-enum R_IA_64_IMM14 = 0x21;
-enum R_IA_64_IMM22 = 0x22;
-enum R_IA_64_IMM64 = 0x23;
-enum R_IA_64_DIR32MSB = 0x24;
-enum R_IA_64_DIR32LSB = 0x25;
-enum R_IA_64_DIR64MSB = 0x26;
-enum R_IA_64_DIR64LSB = 0x27;
-enum R_IA_64_GPREL22 = 0x2a;
-enum R_IA_64_GPREL64I = 0x2b;
-enum R_IA_64_GPREL32MSB = 0x2c;
-enum R_IA_64_GPREL32LSB = 0x2d;
-enum R_IA_64_GPREL64MSB = 0x2e;
-enum R_IA_64_GPREL64LSB = 0x2f;
-enum R_IA_64_LTOFF22 = 0x32;
-enum R_IA_64_LTOFF64I = 0x33;
-enum R_IA_64_PLTOFF22 = 0x3a;
-enum R_IA_64_PLTOFF64I = 0x3b;
-enum R_IA_64_PLTOFF64MSB = 0x3e;
-enum R_IA_64_PLTOFF64LSB = 0x3f;
-enum R_IA_64_FPTR64I = 0x43;
-enum R_IA_64_FPTR32MSB = 0x44;
-enum R_IA_64_FPTR32LSB = 0x45;
-enum R_IA_64_FPTR64MSB = 0x46;
-enum R_IA_64_FPTR64LSB = 0x47;
-enum R_IA_64_PCREL60B = 0x48;
-enum R_IA_64_PCREL21B = 0x49;
-enum R_IA_64_PCREL21M = 0x4a;
-enum R_IA_64_PCREL21F = 0x4b;
-enum R_IA_64_PCREL32MSB = 0x4c;
-enum R_IA_64_PCREL32LSB = 0x4d;
-enum R_IA_64_PCREL64MSB = 0x4e;
-enum R_IA_64_PCREL64LSB = 0x4f;
-enum R_IA_64_LTOFF_FPTR22 = 0x52;
-enum R_IA_64_LTOFF_FPTR64I = 0x53;
-enum R_IA_64_LTOFF_FPTR32MSB = 0x54;
-enum R_IA_64_LTOFF_FPTR32LSB = 0x55;
-enum R_IA_64_LTOFF_FPTR64MSB = 0x56;
-enum R_IA_64_LTOFF_FPTR64LSB = 0x57;
-enum R_IA_64_SEGREL32MSB = 0x5c;
-enum R_IA_64_SEGREL32LSB = 0x5d;
-enum R_IA_64_SEGREL64MSB = 0x5e;
-enum R_IA_64_SEGREL64LSB = 0x5f;
-enum R_IA_64_SECREL32MSB = 0x64;
-enum R_IA_64_SECREL32LSB = 0x65;
-enum R_IA_64_SECREL64MSB = 0x66;
-enum R_IA_64_SECREL64LSB = 0x67;
-enum R_IA_64_REL32MSB = 0x6c;
-enum R_IA_64_REL32LSB = 0x6d;
-enum R_IA_64_REL64MSB = 0x6e;
-enum R_IA_64_REL64LSB = 0x6f;
-enum R_IA_64_LTV32MSB = 0x74;
-enum R_IA_64_LTV32LSB = 0x75;
-enum R_IA_64_LTV64MSB = 0x76;
-enum R_IA_64_LTV64LSB = 0x77;
-enum R_IA_64_PCREL21BI = 0x79;
-enum R_IA_64_PCREL22 = 0x7a;
-enum R_IA_64_PCREL64I = 0x7b;
-enum R_IA_64_IPLTMSB = 0x80;
-enum R_IA_64_IPLTLSB = 0x81;
-enum R_IA_64_SUB = 0x85;
-enum R_IA_64_LTOFF22X = 0x86;
-enum R_IA_64_LDXMOV = 0x87;
-enum R_IA_64_TPREL14 = 0x91;
-enum R_IA_64_TPREL22 = 0x92;
-enum R_IA_64_TPREL64I = 0x93;
-enum R_IA_64_TPREL64MSB = 0x96;
-enum R_IA_64_TPREL64LSB = 0x97;
-enum R_IA_64_LTOFF_TPREL22 = 0x9a;
-enum R_IA_64_DTPMOD64MSB = 0xa6;
-enum R_IA_64_DTPMOD64LSB = 0xa7;
-enum R_IA_64_LTOFF_DTPMOD22 = 0xaa;
-enum R_IA_64_DTPREL14 = 0xb1;
-enum R_IA_64_DTPREL22 = 0xb2;
-enum R_IA_64_DTPREL64I = 0xb3;
-enum R_IA_64_DTPREL32MSB = 0xb4;
-enum R_IA_64_DTPREL32LSB = 0xb5;
-enum R_IA_64_DTPREL64MSB = 0xb6;
-enum R_IA_64_DTPREL64LSB = 0xb7;
-enum R_IA_64_LTOFF_DTPREL22 = 0xba;
-
-enum R_MIPS_NONE = 0;
-enum R_MIPS_16 = 1;
-enum R_MIPS_32 = 2;
-enum R_MIPS_REL32 = 3;
-enum R_MIPS_26 = 4;
-enum R_MIPS_HI16 = 5;
-enum R_MIPS_LO16 = 6;
-enum R_MIPS_GPREL16 = 7;
-enum R_MIPS_LITERAL = 8;
-enum R_MIPS_GOT16 = 9;
-enum R_MIPS_PC16 = 10;
-enum R_MIPS_CALL16 = 11;
-enum R_MIPS_GPREL32 = 12;
-enum R_MIPS_GOTHI16 = 21;
-enum R_MIPS_GOTLO16 = 22;
-enum R_MIPS_CALLHI16 = 30;
-enum R_MIPS_CALLLO16 = 31;
-
-enum R_PPC_NONE = 0;
-enum R_PPC_ADDR32 = 1;
-enum R_PPC_ADDR24 = 2;
-enum R_PPC_ADDR16 = 3;
-enum R_PPC_ADDR16_LO = 4;
-enum R_PPC_ADDR16_HI = 5;
-enum R_PPC_ADDR16_HA = 6;
-enum R_PPC_ADDR14 = 7;
-enum R_PPC_ADDR14_BRTAKEN = 8;
-enum R_PPC_ADDR14_BRNTAKEN = 9;
-enum R_PPC_REL24 = 10;
-enum R_PPC_REL14 = 11;
-enum R_PPC_REL14_BRTAKEN = 12;
-enum R_PPC_REL14_BRNTAKEN = 13;
-enum R_PPC_GOT16 = 14;
-enum R_PPC_GOT16_LO = 15;
-enum R_PPC_GOT16_HI = 16;
-enum R_PPC_GOT16_HA = 17;
-enum R_PPC_PLTREL24 = 18;
-enum R_PPC_COPY = 19;
-enum R_PPC_GLOB_DAT = 20;
-enum R_PPC_JMP_SLOT = 21;
-enum R_PPC_RELATIVE = 22;
-enum R_PPC_LOCAL24PC = 23;
-enum R_PPC_UADDR32 = 24;
-enum R_PPC_UADDR16 = 25;
-enum R_PPC_REL32 = 26;
-enum R_PPC_PLT32 = 27;
-enum R_PPC_PLTREL32 = 28;
-enum R_PPC_PLT16_LO = 29;
-enum R_PPC_PLT16_HI = 30;
-enum R_PPC_PLT16_HA = 31;
-enum R_PPC_SDAREL16 = 32;
-enum R_PPC_SECTOFF = 33;
-enum R_PPC_SECTOFF_LO = 34;
-enum R_PPC_SECTOFF_HI = 35;
-enum R_PPC_SECTOFF_HA = 36;
-
-enum R_PPC64_ADDR64 = 38;
-enum R_PPC64_ADDR16_HIGHER = 39;
-enum R_PPC64_ADDR16_HIGHERA = 40;
-enum R_PPC64_ADDR16_HIGHEST = 41;
-enum R_PPC64_ADDR16_HIGHESTA = 42;
-enum R_PPC64_UADDR64 = 43;
-enum R_PPC64_REL64 = 44;
-enum R_PPC64_PLT64 = 45;
-enum R_PPC64_PLTREL64 = 46;
-enum R_PPC64_TOC16 = 47;
-enum R_PPC64_TOC16_LO = 48;
-enum R_PPC64_TOC16_HI = 49;
-enum R_PPC64_TOC16_HA = 50;
-enum R_PPC64_TOC = 51;
-enum R_PPC64_DTPMOD64 = 68;
-enum R_PPC64_TPREL64 = 73;
-enum R_PPC64_DTPREL64 = 78;
-
-enum R_PPC_TLS = 67;
-enum R_PPC_DTPMOD32 = 68;
-enum R_PPC_TPREL16 = 69;
-enum R_PPC_TPREL16_LO = 70;
-enum R_PPC_TPREL16_HI = 71;
-enum R_PPC_TPREL16_HA = 72;
-enum R_PPC_TPREL32 = 73;
-enum R_PPC_DTPREL16 = 74;
-enum R_PPC_DTPREL16_LO = 75;
-enum R_PPC_DTPREL16_HI = 76;
-enum R_PPC_DTPREL16_HA = 77;
-enum R_PPC_DTPREL32 = 78;
-enum R_PPC_GOT_TLSGD16 = 79;
-enum R_PPC_GOT_TLSGD16_LO = 80;
-enum R_PPC_GOT_TLSGD16_HI = 81;
-enum R_PPC_GOT_TLSGD16_HA = 82;
-enum R_PPC_GOT_TLSLD16 = 83;
-enum R_PPC_GOT_TLSLD16_LO = 84;
-enum R_PPC_GOT_TLSLD16_HI = 85;
-enum R_PPC_GOT_TLSLD16_HA = 86;
-enum R_PPC_GOT_TPREL16 = 87;
-enum R_PPC_GOT_TPREL16_LO = 88;
-enum R_PPC_GOT_TPREL16_HI = 89;
-enum R_PPC_GOT_TPREL16_HA = 90;
-
-enum R_PPC_EMB_NADDR32 = 101;
-enum R_PPC_EMB_NADDR16 = 102;
-enum R_PPC_EMB_NADDR16_LO = 103;
-enum R_PPC_EMB_NADDR16_HI = 104;
-enum R_PPC_EMB_NADDR16_HA = 105;
-enum R_PPC_EMB_SDAI16 = 106;
-enum R_PPC_EMB_SDA2I16 = 107;
-enum R_PPC_EMB_SDA2REL = 108;
-enum R_PPC_EMB_SDA21 = 109;
-enum R_PPC_EMB_MRKREF = 110;
-enum R_PPC_EMB_RELSEC16 = 111;
-enum R_PPC_EMB_RELST_LO = 112;
-enum R_PPC_EMB_RELST_HI = 113;
-enum R_PPC_EMB_RELST_HA = 114;
-enum R_PPC_EMB_BIT_FLD = 115;
-enum R_PPC_EMB_RELSDA = 116;
-
-enum R_SPARC_NONE = 0;
-enum R_SPARC_8 = 1;
-enum R_SPARC_16 = 2;
-enum R_SPARC_32 = 3;
-enum R_SPARC_DISP8 = 4;
-enum R_SPARC_DISP16 = 5;
-enum R_SPARC_DISP32 = 6;
-enum R_SPARC_WDISP30 = 7;
-enum R_SPARC_WDISP22 = 8;
-enum R_SPARC_HI22 = 9;
-enum R_SPARC_22 = 10;
-enum R_SPARC_13 = 11;
-enum R_SPARC_LO10 = 12;
-enum R_SPARC_GOT10 = 13;
-enum R_SPARC_GOT13 = 14;
-enum R_SPARC_GOT22 = 15;
-enum R_SPARC_PC10 = 16;
-enum R_SPARC_PC22 = 17;
-enum R_SPARC_WPLT30 = 18;
-enum R_SPARC_COPY = 19;
-enum R_SPARC_GLOB_DAT = 20;
-enum R_SPARC_JMP_SLOT = 21;
-enum R_SPARC_RELATIVE = 22;
-enum R_SPARC_UA32 = 23;
-enum R_SPARC_PLT32 = 24;
-enum R_SPARC_HIPLT22 = 25;
-enum R_SPARC_LOPLT10 = 26;
-enum R_SPARC_PCPLT32 = 27;
-enum R_SPARC_PCPLT22 = 28;
-enum R_SPARC_PCPLT10 = 29;
-enum R_SPARC_10 = 30;
-enum R_SPARC_11 = 31;
-enum R_SPARC_64 = 32;
-enum R_SPARC_OLO10 = 33;
-enum R_SPARC_HH22 = 34;
-enum R_SPARC_HM10 = 35;
-enum R_SPARC_LM22 = 36;
-enum R_SPARC_PC_HH22 = 37;
-enum R_SPARC_PC_HM10 = 38;
-enum R_SPARC_PC_LM22 = 39;
-enum R_SPARC_WDISP16 = 40;
-enum R_SPARC_WDISP19 = 41;
-enum R_SPARC_GLOB_JMP = 42;
-enum R_SPARC_7 = 43;
-enum R_SPARC_5 = 44;
-enum R_SPARC_6 = 45;
-enum R_SPARC_DISP64 = 46;
-enum R_SPARC_PLT64 = 47;
-enum R_SPARC_HIX22 = 48;
-enum R_SPARC_LOX10 = 49;
-enum R_SPARC_H44 = 50;
-enum R_SPARC_M44 = 51;
-enum R_SPARC_L44 = 52;
-enum R_SPARC_REGISTER = 53;
-enum R_SPARC_UA64 = 54;
-enum R_SPARC_UA16 = 55;
-enum R_SPARC_TLS_GD_HI22 = 56;
-enum R_SPARC_TLS_GD_LO10 = 57;
-enum R_SPARC_TLS_GD_ADD = 58;
-enum R_SPARC_TLS_GD_CALL = 59;
-enum R_SPARC_TLS_LDM_HI22 = 60;
-enum R_SPARC_TLS_LDM_LO10 = 61;
-enum R_SPARC_TLS_LDM_ADD = 62;
-enum R_SPARC_TLS_LDM_CALL = 63;
-enum R_SPARC_TLS_LDO_HIX22 = 64;
-enum R_SPARC_TLS_LDO_LOX10 = 65;
-enum R_SPARC_TLS_LDO_ADD = 66;
-enum R_SPARC_TLS_IE_HI22 = 67;
-enum R_SPARC_TLS_IE_LO10 = 68;
-enum R_SPARC_TLS_IE_LD = 69;
-enum R_SPARC_TLS_IE_LDX = 70;
-enum R_SPARC_TLS_IE_ADD = 71;
-enum R_SPARC_TLS_LE_HIX22 = 72;
-enum R_SPARC_TLS_LE_LOX10 = 73;
-enum R_SPARC_TLS_DTPMOD32 = 74;
-enum R_SPARC_TLS_DTPMOD64 = 75;
-enum R_SPARC_TLS_DTPOFF32 = 76;
-enum R_SPARC_TLS_DTPOFF64 = 77;
-enum R_SPARC_TLS_TPOFF32 = 78;
-enum R_SPARC_TLS_TPOFF64 = 79;
-
-enum R_X86_64_NONE = 0;
-enum R_X86_64_64 = 1;
-enum R_X86_64_PC32 = 2;
-enum R_X86_64_GOT32 = 3;
-enum R_X86_64_PLT32 = 4;
-enum R_X86_64_COPY = 5;
-enum R_X86_64_GLOB_DAT = 6;
-enum R_X86_64_JMP_SLOT = 7;
-enum R_X86_64_RELATIVE = 8;
-enum R_X86_64_GOTPCREL = 9;
-enum R_X86_64_32 = 10;
-enum R_X86_64_32S = 11;
-enum R_X86_64_16 = 12;
-enum R_X86_64_PC16 = 13;
-enum R_X86_64_8 = 14;
-enum R_X86_64_PC8 = 15;
-enum R_X86_64_DTPMOD64 = 16;
-enum R_X86_64_DTPOFF64 = 17;
-enum R_X86_64_TPOFF64 = 18;
-enum R_X86_64_TLSGD = 19;
-enum R_X86_64_TLSLD = 20;
-enum R_X86_64_DTPOFF32 = 21;
-enum R_X86_64_GOTTPOFF = 22;
-enum R_X86_64_TPOFF32 = 23;
-enum R_X86_64_IRELATIVE = 37;
version (PPC64)
{
-enum __ELF_WORD_SIZE = 64;
-enum ELF_ARCH = EM_PPC64;
-enum ELF_MACHINE_OK(x) = ((x) == EM_PPC64);
+ enum __ELF_WORD_SIZE = 64;
+ enum ELF_ARCH = EM_PPC64;
+ enum ELF_MACHINE_OK(x) = ((x) == EM_PPC64);
}
version (PPC)
{
-enum __ELF_WORD_SIZE = 32;
-enum ELF_ARCH = EM_PPC;
-enum ELF_ARCH32 = EM_PPC;
-enum ELF_MACHINE_OK(x) = ((x) == EM_PPC);
+ enum __ELF_WORD_SIZE = 32;
+ enum ELF_ARCH = EM_PPC;
+ enum ELF_ARCH32 = EM_PPC;
+ enum ELF_MACHINE_OK(x) = ((x) == EM_PPC);
}
-/**
- * Auxiliary vector entries for passing information to the interpreter.
- *
- * The PowerPC supplement to the SVR4 ABI specification names this "auxv_t",
- * but POSIX lays claim to all symbols ending with "_t".
- */
-
struct Elf32_Auxinfo
{
int a_type;
@@ -896,12 +141,6 @@ struct Elf64_Auxinfo
}
}
-// __ElfType(Auxinfo);
-
-/**
- * Values for a_type.
- */
-
enum AT_NULL = 0;
enum AT_IGNORE = 1;
enum AT_EXECFD = 2;
@@ -926,31 +165,23 @@ enum AT_STACKPROT = 21;
enum AT_TIMEKEEP = 22;
enum AT_COUNT = 23;
-/**
- * Relocation types.
- */
-
enum R_PPC_COUNT = 37;
enum R_PPC_EMB_COUNT = (R_PPC_EMB_RELSDA - R_PPC_EMB_NADDR32 + 1);
-/**
- * Define "machine" characteristics
- */
-
version (PPC64)
{
-enum ELF_TARG_CLASS = ELFCLASS64;
-enum ELF_TARG_DATA = ELFDATA2MSB;
-enum ELF_TARG_MACH = EM_PPC64;
-enum ELF_TARG_VER = 1;
+ enum ELF_TARG_CLASS = ELFCLASS64;
+ enum ELF_TARG_DATA = ELFDATA2MSB;
+ enum ELF_TARG_MACH = EM_PPC64;
+ enum ELF_TARG_VER = 1;
}
version (PPC)
{
-enum ELF_TARG_CLASS = ELFCLASS32;
-enum ELF_TARG_DATA = ELFDATA2MSB;
-enum ELF_TARG_MACH = EM_PPC;
-enum ELF_TARG_VER = 1;
+ enum ELF_TARG_CLASS = ELFCLASS32;
+ enum ELF_TARG_DATA = ELFDATA2MSB;
+ enum ELF_TARG_MACH = EM_PPC;
+ enum ELF_TARG_VER = 1;
}
enum ET_DYN_LOAD_ADDR = 0x01010000;
diff --git a/libphobos/libdruntime/core/sys/linux/elf.d b/libphobos/libdruntime/core/sys/linux/elf.d
index 4d0b227..2cd93317 100644
--- a/libphobos/libdruntime/core/sys/linux/elf.d
+++ b/libphobos/libdruntime/core/sys/linux/elf.d
@@ -12,494 +12,28 @@ nothrow:
@system:
import core.stdc.stdint;
-
-alias uint16_t Elf32_Half;
-alias uint16_t Elf64_Half;
-
-alias uint32_t Elf32_Word;
-alias int32_t Elf32_Sword;
-alias uint32_t Elf64_Word;
-alias int32_t Elf64_Sword;
-
-alias uint64_t Elf32_Xword;
-alias int64_t Elf32_Sxword;
-alias uint64_t Elf64_Xword;
-alias int64_t Elf64_Sxword;
-
-alias uint32_t Elf32_Addr;
-alias uint64_t Elf64_Addr;
-
-alias uint32_t Elf32_Off;
-alias uint64_t Elf64_Off;
-
-alias uint16_t Elf32_Section;
-alias uint16_t Elf64_Section;
-
-alias Elf32_Half Elf32_Versym;
-alias Elf64_Half Elf64_Versym;
-
-
-enum EI_NIDENT = 16;
-
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-enum EI_MAG0 = 0;
-enum ELFMAG0 = 0x7f;
-
-enum EI_MAG1 = 1;
-enum ELFMAG1 = 'E';
-
-enum EI_MAG2 = 2;
-enum ELFMAG2 = 'L';
-
-enum EI_MAG3 = 3;
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum EI_CLASS = 4;
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-enum ELFCLASSNUM = 3;
-
-enum EI_DATA = 5;
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-enum ELFDATANUM = 3;
-
-enum EI_VERSION = 6;
-
-enum EI_OSABI = 7;
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = 0;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_GNU = 3;
-enum ELFOSABI_LINUX = ELFOSABI_GNU;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_ARM_AEABI = 64;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
-enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
-
-enum EI_ABIVERSION = 8;
-
-enum EI_PAD = 9;
-
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_NUM = 5;
-enum ET_LOOS = 0xfe00;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-
-enum EM_PARISC = 15;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_FAKE_ALPHA = 41;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_X86_64 = 62;
-enum EM_PDSP = 63;
-
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_AARCH64 = 183;
-enum EM_TILEPRO = 188;
-enum EM_TILEGX = 191;
-enum EM_NUM = 192;
-
-enum EM_ALPHA = 0x9026;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-enum EV_NUM = 2;
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_BEFORE = 0xff00;
-enum SHN_AFTER = 0xff01;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-enum SHT_NUM = 19;
-enum SHT_LOOS = 0x60000000;
-enum SHT_GNU_ATTRIBUTES = 0x6ffffff5;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_GNU_LIBLIST = 0x6ffffff7;
-enum SHT_CHECKSUM = 0x6ffffff8;
-enum SHT_LOSUNW = 0x6ffffffa;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
-enum SHT_GNU_verdef = 0x6ffffffd;
-enum SHT_GNU_verneed = 0x6ffffffe;
-enum SHT_GNU_versym = 0x6fffffff;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_LOPROC = 0x70000000;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0x8fffffff;
-
-enum SHF_WRITE = (1 << 0);
-enum SHF_ALLOC = (1 << 1);
-enum SHF_EXECINSTR = (1 << 2);
-enum SHF_MERGE = (1 << 4);
-enum SHF_STRINGS = (1 << 5);
-enum SHF_INFO_LINK = (1 << 6);
-enum SHF_LINK_ORDER = (1 << 7);
-enum SHF_OS_NONCONFORMING = (1 << 8);
-enum SHF_GROUP = (1 << 9);
-enum SHF_TLS = (1 << 10);
-enum SHF_COMPRESSED = (1 << 11);
-enum SHF_MASKOS = 0x0ff00000;
-enum SHF_MASKPROC = 0xf0000000;
-enum SHF_ORDERED = (1 << 30);
-enum SHF_EXCLUDE = (1 << 31);
-enum GRP_COMDAT = 0x1;
-
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Section st_shndx;
-}
-
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Section st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
-struct Elf32_Syminfo
-{
- Elf32_Half si_boundto;
- Elf32_Half si_flags;
-}
-
-struct Elf64_Syminfo
-{
- Elf64_Half si_boundto;
- Elf64_Half si_flags;
-}
-enum SYMINFO_BT_SELF = 0xffff;
-enum SYMINFO_BT_PARENT = 0xfffe;
-enum SYMINFO_BT_LOWRESERVE = 0xff00;
-enum SYMINFO_FLG_DIRECT = 0x0001;
-enum SYMINFO_FLG_PASSTHRU = 0x0002;
-enum SYMINFO_FLG_COPY = 0x0004;
-enum SYMINFO_FLG_LAZYLOAD = 0x0008;
-enum SYMINFO_NONE = 0;
-enum SYMINFO_CURRENT = 1;
-enum SYMINFO_NUM = 2;
-
-extern (D)
-{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
- alias ELF32_ST_BIND ELF64_ST_BIND;
- alias ELF32_ST_TYPE ELF64_ST_TYPE;
- alias ELF32_ST_INFO ELF64_ST_INFO;
-}
-
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOOS = 10;
-enum STB_GNU_UNIQUE = 10;
-enum STB_HIOS = 12;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_GNU_IFUNC = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
-
-enum STN_UNDEF = 0;
+public import core.sys.elf;
extern (D)
{
auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
alias ELF32_ST_VISIBILITY ELF64_ST_VISIBILITY;
}
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
-
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
-extern (D)
-{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-
- auto ELF64_R_SYM(I)(I i) { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type); }
-}
-
-struct Elf32_Phdr
+struct Elf32_Nhdr
{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
+ Elf32_Word n_namesz;
+ Elf32_Word n_descsz;
+ Elf32_Word n_type;
}
-struct Elf64_Phdr
+struct Elf64_Nhdr
{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
+ Elf64_Word n_namesz;
+ Elf64_Word n_descsz;
+ Elf64_Word n_type;
}
-enum PN_XNUM = 0xffff;
-
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_NUM = 8;
-enum PT_LOOS = 0x60000000;
-enum PT_GNU_EH_FRAME = 0x6474e550;
-enum PT_GNU_STACK = 0x6474e551;
-enum PT_GNU_RELRO = 0x6474e552;
-enum PT_LOSUNW = 0x6ffffffa;
-enum PT_SUNWBSS = 0x6ffffffa;
-enum PT_SUNWSTACK = 0x6ffffffb;
-enum PT_HISUNW = 0x6fffffff;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-
-enum PF_X = (1 << 0);
-enum PF_W = (1 << 1);
-enum PF_R = (1 << 2);
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
-
enum NT_PRSTATUS = 1;
enum NT_FPREGSET = 2;
enum NT_PRPSINFO = 3;
@@ -541,242 +75,10 @@ enum NT_ARM_HW_WATCH = 0x403;
enum NT_VERSION = 1;
-struct Elf32_Dyn
-{
- Elf32_Sword d_tag;
- union _d_un
- {
- Elf32_Word d_val;
- Elf32_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf64_Dyn
-{
- Elf64_Sxword 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;
-enum DT_RELAENT = 9;
-enum DT_STRSZ = 10;
-enum DT_SYMENT = 11;
-enum DT_INIT = 12;
-enum DT_FINI = 13;
-enum DT_SONAME = 14;
-enum DT_RPATH = 15;
-enum DT_SYMBOLIC = 16;
-enum DT_REL = 17;
-enum DT_RELSZ = 18;
-enum DT_RELENT = 19;
-enum DT_PLTREL = 20;
-enum DT_DEBUG = 21;
-enum DT_TEXTREL = 22;
-enum DT_JMPREL = 23;
-enum DT_BIND_NOW = 24;
-enum DT_INIT_ARRAY = 25;
-enum DT_FINI_ARRAY = 26;
-enum DT_INIT_ARRAYSZ = 27;
-enum DT_FINI_ARRAYSZ = 28;
-enum DT_RUNPATH = 29;
-enum DT_FLAGS = 30;
-enum DT_ENCODING = 32;
-enum DT_PREINIT_ARRAY = 32;
-enum DT_PREINIT_ARRAYSZ = 33;
-enum DT_NUM = 34;
-enum DT_LOOS = 0x6000000d;
-enum DT_HIOS = 0x6ffff000;
-enum DT_LOPROC = 0x70000000;
-enum DT_HIPROC = 0x7fffffff;
-enum DT_PROCNUM = DT_MIPS_NUM;
-enum DT_VALRNGLO = 0x6ffffd00;
-enum DT_GNU_PRELINKED = 0x6ffffdf5;
-enum DT_GNU_CONFLICTSZ = 0x6ffffdf6;
-enum DT_GNU_LIBLISTSZ = 0x6ffffdf7;
-enum DT_CHECKSUM = 0x6ffffdf8;
-enum DT_PLTPADSZ = 0x6ffffdf9;
-enum DT_MOVEENT = 0x6ffffdfa;
-enum DT_MOVESZ = 0x6ffffdfb;
-enum DT_FEATURE_1 = 0x6ffffdfc;
-enum DT_POSFLAG_1 = 0x6ffffdfd;
-enum DT_SYMINSZ = 0x6ffffdfe;
-enum DT_SYMINENT = 0x6ffffdff;
-enum DT_VALRNGHI = 0x6ffffdff;
-extern (D) auto DT_VALTAGIDX(T)(T tag)
-{
- return DT_VALRNGHI - tag;
-}
-enum DT_VALNUM = 12;
-enum DT_ADDRRNGLO = 0x6ffffe00;
-enum DT_GNU_HASH = 0x6ffffef5;
-enum DT_TLSDESC_PLT = 0x6ffffef6;
-enum DT_TLSDESC_GOT = 0x6ffffef7;
-enum DT_GNU_CONFLICT = 0x6ffffef8;
-enum DT_GNU_LIBLIST = 0x6ffffef9;
-enum DT_CONFIG = 0x6ffffefa;
-enum DT_DEPAUDIT = 0x6ffffefb;
-enum DT_AUDIT = 0x6ffffefc;
-enum DT_PLTPAD = 0x6ffffefd;
-enum DT_MOVETAB = 0x6ffffefe;
-enum DT_SYMINFO = 0x6ffffeff;
-enum DT_ADDRRNGHI = 0x6ffffeff;
-extern (D) auto DT_ADDRTAGIDX(T)(T tag)
-{
- return DT_ADDRRNGHI - tag;
-}
-enum DT_ADDRNUM = 11;
-enum DT_VERSYM = 0x6ffffff0;
-
-enum DT_RELACOUNT = 0x6ffffff9;
-enum DT_RELCOUNT = 0x6ffffffa;
-enum DT_FLAGS_1 = 0x6ffffffb;
-enum DT_VERDEF = 0x6ffffffc;
-enum DT_VERDEFNUM = 0x6ffffffd;
-enum DT_VERNEED = 0x6ffffffe;
-enum DT_VERNEEDNUM = 0x6fffffff;
-extern (D) auto DT_VERSIONTAGIDX(T)(T tag)
-{
- return DT_VERNEEDNUM - tag;
-}
-enum DT_VERSIONTAGNUM = 16;
-enum DT_AUXILIARY = 0x7ffffffd;
-enum DT_FILTER = 0x7fffffff;
-extern (D) auto DT_EXTRATAGIDX(T)(T tag)
-{
- return cast(Elf32_Word)(-(cast(Elf32_Sword)(tag) <<1>>1)-1);
-}
-enum DT_EXTRANUM = 3;
-enum DF_ORIGIN = 0x00000001;
-enum DF_SYMBOLIC = 0x00000002;
-enum DF_TEXTREL = 0x00000004;
-enum DF_BIND_NOW = 0x00000008;
-enum DF_STATIC_TLS = 0x00000010;
-enum DF_1_NOW = 0x00000001;
-enum DF_1_GLOBAL = 0x00000002;
-enum DF_1_GROUP = 0x00000004;
-enum DF_1_NODELETE = 0x00000008;
-enum DF_1_LOADFLTR = 0x00000010;
-enum DF_1_INITFIRST = 0x00000020;
-enum DF_1_NOOPEN = 0x00000040;
-enum DF_1_ORIGIN = 0x00000080;
-enum DF_1_DIRECT = 0x00000100;
-enum DF_1_TRANS = 0x00000200;
-enum DF_1_INTERPOSE = 0x00000400;
-enum DF_1_NODEFLIB = 0x00000800;
-enum DF_1_NODUMP = 0x00001000;
-enum DF_1_CONFALT = 0x00002000;
-enum DF_1_ENDFILTEE = 0x00004000;
-enum DF_1_DISPRELDNE = 0x00008000;
-enum DF_1_DISPRELPND = 0x00010000;
-enum DF_1_NODIRECT = 0x00020000;
-enum DF_1_IGNMULDEF = 0x00040000;
-enum DF_1_NOKSYMS = 0x00080000;
-enum DF_1_NOHDR = 0x00100000;
-enum DF_1_EDITED = 0x00200000;
-enum DF_1_NORELOC = 0x00400000;
-enum DF_1_SYMINTPOSE = 0x00800000;
-enum DF_1_GLOBAUDIT = 0x01000000;
-enum DF_1_SINGLETON = 0x02000000;
-enum DTF_1_PARINIT = 0x00000001;
-enum DTF_1_CONFEXP = 0x00000002;
-enum DF_P1_LAZYLOAD = 0x00000001;
-enum DF_P1_GROUPPERM = 0x00000002;
-
-struct Elf32_Verdef
-{
- Elf32_Half vd_version;
- Elf32_Half vd_flags;
- Elf32_Half vd_ndx;
- Elf32_Half vd_cnt;
- Elf32_Word vd_hash;
- Elf32_Word vd_aux;
- Elf32_Word vd_next;
-}
-
-struct Elf64_Verdef
-{
- Elf64_Half vd_version;
- Elf64_Half vd_flags;
- Elf64_Half vd_ndx;
- Elf64_Half vd_cnt;
- Elf64_Word vd_hash;
- Elf64_Word vd_aux;
- Elf64_Word vd_next;
-}
-enum VER_DEF_NONE = 0;
-enum VER_DEF_CURRENT = 1;
-enum VER_DEF_NUM = 2;
-enum VER_FLG_BASE = 0x1;
-enum VER_FLG_WEAK = 0x2;
-enum VER_NDX_LOCAL = 0;
-enum VER_NDX_GLOBAL = 1;
-enum VER_NDX_LORESERVE = 0xff00;
-enum VER_NDX_ELIMINATE = 0xff01;
-
-struct Elf32_Verdaux
-{
- Elf32_Word vda_name;
- Elf32_Word vda_next;
-}
-
-struct Elf64_Verdaux
-{
- Elf64_Word vda_name;
- Elf64_Word vda_next;
-}
-
-struct Elf32_Verneed
-{
- Elf32_Half vn_version;
- Elf32_Half vn_cnt;
- Elf32_Word vn_file;
- Elf32_Word vn_aux;
- Elf32_Word vn_next;
-}
-
-struct Elf64_Verneed
-{
- Elf64_Half vn_version;
- Elf64_Half vn_cnt;
- Elf64_Word vn_file;
- Elf64_Word vn_aux;
- Elf64_Word vn_next;
-}
-enum VER_NEED_NONE = 0;
-enum VER_NEED_CURRENT = 1;
-enum VER_NEED_NUM = 2;
-
-struct Elf32_Vernaux
-{
- Elf32_Word vna_hash;
- Elf32_Half vna_flags;
- Elf32_Half vna_other;
- Elf32_Word vna_name;
- Elf32_Word vna_next;
-}
-
-struct Elf64_Vernaux
-{
- Elf64_Word vna_hash;
- Elf64_Half vna_flags;
- Elf64_Half vna_other;
- Elf64_Word vna_name;
- Elf64_Word vna_next;
-}
-// duplicate
-// enum VER_FLG_WEAK = 0x2;
+enum NT_GNU_ABI_TAG = 1;
+enum NT_GNU_HWCAP = 2;
+enum NT_GNU_BUILD_ID = 3;
+enum NT_GNU_GOLD_VERSION = 4;
struct Elf32_auxv_t
{
@@ -836,1698 +138,3 @@ enum AT_L1I_CACHESHAPE = 34;
enum AT_L1D_CACHESHAPE = 35;
enum AT_L2_CACHESHAPE = 36;
enum AT_L3_CACHESHAPE = 37;
-
-struct Elf32_Nhdr
-{
- Elf32_Word n_namesz;
- Elf32_Word n_descsz;
- Elf32_Word n_type;
-}
-
-struct Elf64_Nhdr
-{
- Elf64_Word n_namesz;
- Elf64_Word n_descsz;
- Elf64_Word n_type;
-}
-enum ELF_NOTE_SOLARIS = "SUNW Solaris";
-enum ELF_NOTE_GNU = "GNU";
-enum ELF_NOTE_PAGESIZE_HINT = 1;
-enum NT_GNU_ABI_TAG = 1;
-enum ELF_NOTE_ABI = NT_GNU_ABI_TAG;
-enum ELF_NOTE_OS_LINUX = 0;
-enum ELF_NOTE_OS_GNU = 1;
-enum ELF_NOTE_OS_SOLARIS2 = 2;
-enum ELF_NOTE_OS_FREEBSD = 3;
-enum NT_GNU_HWCAP = 2;
-enum NT_GNU_BUILD_ID = 3;
-enum NT_GNU_GOLD_VERSION = 4;
-struct Elf32_Move
-{
- Elf32_Xword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-struct Elf64_Move
-{
- Elf64_Xword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-extern (D)
-{
- auto ELF32_M_SYM(I)(I info) { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
-alias ELF32_M_SYM ELF64_M_SYM;
-alias ELF32_M_SIZE ELF64_M_SIZE;
-alias ELF32_M_INFO ELF64_M_INFO;
-enum EF_CPU32 = 0x00810000;
-
-enum R_68K_NONE = 0;
-enum R_68K_32 = 1;
-enum R_68K_16 = 2;
-enum R_68K_8 = 3;
-enum R_68K_PC32 = 4;
-enum R_68K_PC16 = 5;
-enum R_68K_PC8 = 6;
-enum R_68K_GOT32 = 7;
-enum R_68K_GOT16 = 8;
-enum R_68K_GOT8 = 9;
-enum R_68K_GOT32O = 10;
-enum R_68K_GOT16O = 11;
-enum R_68K_GOT8O = 12;
-enum R_68K_PLT32 = 13;
-enum R_68K_PLT16 = 14;
-enum R_68K_PLT8 = 15;
-enum R_68K_PLT32O = 16;
-enum R_68K_PLT16O = 17;
-enum R_68K_PLT8O = 18;
-enum R_68K_COPY = 19;
-enum R_68K_GLOB_DAT = 20;
-enum R_68K_JMP_SLOT = 21;
-enum R_68K_RELATIVE = 22;
-enum R_68K_TLS_GD32 = 25;
-enum R_68K_TLS_GD16 = 26;
-enum R_68K_TLS_GD8 = 27;
-enum R_68K_TLS_LDM32 = 28;
-enum R_68K_TLS_LDM16 = 29;
-enum R_68K_TLS_LDM8 = 30;
-enum R_68K_TLS_LDO32 = 31;
-enum R_68K_TLS_LDO16 = 32;
-enum R_68K_TLS_LDO8 = 33;
-enum R_68K_TLS_IE32 = 34;
-enum R_68K_TLS_IE16 = 35;
-enum R_68K_TLS_IE8 = 36;
-enum R_68K_TLS_LE32 = 37;
-enum R_68K_TLS_LE16 = 38;
-enum R_68K_TLS_LE8 = 39;
-enum R_68K_TLS_DTPMOD32 = 40;
-enum R_68K_TLS_DTPREL32 = 41;
-enum R_68K_TLS_TPREL32 = 42;
-enum R_68K_NUM = 43;
-
-enum R_386_NONE = 0;
-enum R_386_32 = 1;
-enum R_386_PC32 = 2;
-enum R_386_GOT32 = 3;
-enum R_386_PLT32 = 4;
-enum R_386_COPY = 5;
-enum R_386_GLOB_DAT = 6;
-enum R_386_JMP_SLOT = 7;
-enum R_386_RELATIVE = 8;
-enum R_386_GOTOFF = 9;
-enum R_386_GOTPC = 10;
-enum R_386_32PLT = 11;
-enum R_386_TLS_TPOFF = 14;
-enum R_386_TLS_IE = 15;
-enum R_386_TLS_GOTIE = 16;
-enum R_386_TLS_LE = 17;
-enum R_386_TLS_GD = 18;
-enum R_386_TLS_LDM = 19;
-enum R_386_16 = 20;
-enum R_386_PC16 = 21;
-enum R_386_8 = 22;
-enum R_386_PC8 = 23;
-enum R_386_TLS_GD_32 = 24;
-enum R_386_TLS_GD_PUSH = 25;
-enum R_386_TLS_GD_CALL = 26;
-enum R_386_TLS_GD_POP = 27;
-enum R_386_TLS_LDM_32 = 28;
-enum R_386_TLS_LDM_PUSH = 29;
-enum R_386_TLS_LDM_CALL = 30;
-enum R_386_TLS_LDM_POP = 31;
-enum R_386_TLS_LDO_32 = 32;
-enum R_386_TLS_IE_32 = 33;
-enum R_386_TLS_LE_32 = 34;
-enum R_386_TLS_DTPMOD32 = 35;
-enum R_386_TLS_DTPOFF32 = 36;
-enum R_386_TLS_TPOFF32 = 37;
-enum R_386_SIZE32 = 38;
-enum R_386_TLS_GOTDESC = 39;
-enum R_386_TLS_DESC_CALL = 40;
-enum R_386_TLS_DESC = 41;
-enum R_386_IRELATIVE = 42;
-enum R_386_NUM = 43;
-
-enum STT_SPARC_REGISTER = 13;
-
-enum EF_SPARCV9_MM = 3;
-enum EF_SPARCV9_TSO = 0;
-enum EF_SPARCV9_PSO = 1;
-enum EF_SPARCV9_RMO = 2;
-enum EF_SPARC_LEDATA = 0x800000;
-enum EF_SPARC_EXT_MASK = 0xFFFF00;
-enum EF_SPARC_32PLUS = 0x000100;
-enum EF_SPARC_SUN_US1 = 0x000200;
-enum EF_SPARC_HAL_R1 = 0x000400;
-enum EF_SPARC_SUN_US3 = 0x000800;
-
-enum R_SPARC_NONE = 0;
-enum R_SPARC_8 = 1;
-enum R_SPARC_16 = 2;
-enum R_SPARC_32 = 3;
-enum R_SPARC_DISP8 = 4;
-enum R_SPARC_DISP16 = 5;
-enum R_SPARC_DISP32 = 6;
-enum R_SPARC_WDISP30 = 7;
-enum R_SPARC_WDISP22 = 8;
-enum R_SPARC_HI22 = 9;
-enum R_SPARC_22 = 10;
-enum R_SPARC_13 = 11;
-enum R_SPARC_LO10 = 12;
-enum R_SPARC_GOT10 = 13;
-enum R_SPARC_GOT13 = 14;
-enum R_SPARC_GOT22 = 15;
-enum R_SPARC_PC10 = 16;
-enum R_SPARC_PC22 = 17;
-enum R_SPARC_WPLT30 = 18;
-enum R_SPARC_COPY = 19;
-enum R_SPARC_GLOB_DAT = 20;
-enum R_SPARC_JMP_SLOT = 21;
-enum R_SPARC_RELATIVE = 22;
-enum R_SPARC_UA32 = 23;
-
-enum R_SPARC_PLT32 = 24;
-enum R_SPARC_HIPLT22 = 25;
-enum R_SPARC_LOPLT10 = 26;
-enum R_SPARC_PCPLT32 = 27;
-enum R_SPARC_PCPLT22 = 28;
-enum R_SPARC_PCPLT10 = 29;
-enum R_SPARC_10 = 30;
-enum R_SPARC_11 = 31;
-enum R_SPARC_64 = 32;
-enum R_SPARC_OLO10 = 33;
-enum R_SPARC_HH22 = 34;
-enum R_SPARC_HM10 = 35;
-enum R_SPARC_LM22 = 36;
-enum R_SPARC_PC_HH22 = 37;
-enum R_SPARC_PC_HM10 = 38;
-enum R_SPARC_PC_LM22 = 39;
-enum R_SPARC_WDISP16 = 40;
-enum R_SPARC_WDISP19 = 41;
-enum R_SPARC_GLOB_JMP = 42;
-enum R_SPARC_7 = 43;
-enum R_SPARC_5 = 44;
-enum R_SPARC_6 = 45;
-enum R_SPARC_DISP64 = 46;
-enum R_SPARC_PLT64 = 47;
-enum R_SPARC_HIX22 = 48;
-enum R_SPARC_LOX10 = 49;
-enum R_SPARC_H44 = 50;
-enum R_SPARC_M44 = 51;
-enum R_SPARC_L44 = 52;
-enum R_SPARC_REGISTER = 53;
-enum R_SPARC_UA64 = 54;
-enum R_SPARC_UA16 = 55;
-enum R_SPARC_TLS_GD_HI22 = 56;
-enum R_SPARC_TLS_GD_LO10 = 57;
-enum R_SPARC_TLS_GD_ADD = 58;
-enum R_SPARC_TLS_GD_CALL = 59;
-enum R_SPARC_TLS_LDM_HI22 = 60;
-enum R_SPARC_TLS_LDM_LO10 = 61;
-enum R_SPARC_TLS_LDM_ADD = 62;
-enum R_SPARC_TLS_LDM_CALL = 63;
-enum R_SPARC_TLS_LDO_HIX22 = 64;
-enum R_SPARC_TLS_LDO_LOX10 = 65;
-enum R_SPARC_TLS_LDO_ADD = 66;
-enum R_SPARC_TLS_IE_HI22 = 67;
-enum R_SPARC_TLS_IE_LO10 = 68;
-enum R_SPARC_TLS_IE_LD = 69;
-enum R_SPARC_TLS_IE_LDX = 70;
-enum R_SPARC_TLS_IE_ADD = 71;
-enum R_SPARC_TLS_LE_HIX22 = 72;
-enum R_SPARC_TLS_LE_LOX10 = 73;
-enum R_SPARC_TLS_DTPMOD32 = 74;
-enum R_SPARC_TLS_DTPMOD64 = 75;
-enum R_SPARC_TLS_DTPOFF32 = 76;
-enum R_SPARC_TLS_DTPOFF64 = 77;
-enum R_SPARC_TLS_TPOFF32 = 78;
-enum R_SPARC_TLS_TPOFF64 = 79;
-enum R_SPARC_GOTDATA_HIX22 = 80;
-enum R_SPARC_GOTDATA_LOX10 = 81;
-enum R_SPARC_GOTDATA_OP_HIX22 = 82;
-enum R_SPARC_GOTDATA_OP_LOX10 = 83;
-enum R_SPARC_GOTDATA_OP = 84;
-enum R_SPARC_H34 = 85;
-enum R_SPARC_SIZE32 = 86;
-enum R_SPARC_SIZE64 = 87;
-enum R_SPARC_WDISP10 = 88;
-enum R_SPARC_JMP_IREL = 248;
-enum R_SPARC_IRELATIVE = 249;
-enum R_SPARC_GNU_VTINHERIT = 250;
-enum R_SPARC_GNU_VTENTRY = 251;
-enum R_SPARC_REV32 = 252;
-enum R_SPARC_NUM = 253;
-
-enum DT_SPARC_REGISTER = 0x70000001;
-enum DT_SPARC_NUM = 2;
-
-enum EF_MIPS_NOREORDER = 1;
-enum EF_MIPS_PIC = 2;
-enum EF_MIPS_CPIC = 4;
-enum EF_MIPS_XGOT = 8;
-enum EF_MIPS_64BIT_WHIRL = 16;
-enum EF_MIPS_ABI2 = 32;
-enum EF_MIPS_ABI_ON32 = 64;
-enum EF_MIPS_ARCH = 0xf0000000;
-
-enum EF_MIPS_ARCH_1 = 0x00000000;
-enum EF_MIPS_ARCH_2 = 0x10000000;
-enum EF_MIPS_ARCH_3 = 0x20000000;
-enum EF_MIPS_ARCH_4 = 0x30000000;
-enum EF_MIPS_ARCH_5 = 0x40000000;
-enum EF_MIPS_ARCH_32 = 0x50000000;
-enum EF_MIPS_ARCH_64 = 0x60000000;
-enum EF_MIPS_ARCH_32R2 = 0x70000000;
-enum EF_MIPS_ARCH_64R2 = 0x80000000;
-
-enum E_MIPS_ARCH_1 = EF_MIPS_ARCH_1;
-enum E_MIPS_ARCH_2 = EF_MIPS_ARCH_2;
-enum E_MIPS_ARCH_3 = EF_MIPS_ARCH_3;
-enum E_MIPS_ARCH_4 = EF_MIPS_ARCH_4;
-enum E_MIPS_ARCH_5 = EF_MIPS_ARCH_5;
-enum E_MIPS_ARCH_32 = EF_MIPS_ARCH_32;
-enum E_MIPS_ARCH_64 = EF_MIPS_ARCH_64;
-
-enum SHN_MIPS_ACOMMON = 0xff00;
-enum SHN_MIPS_TEXT = 0xff01;
-enum SHN_MIPS_DATA = 0xff02;
-enum SHN_MIPS_SCOMMON = 0xff03;
-enum SHN_MIPS_SUNDEFINED = 0xff04;
-
-enum SHT_MIPS_LIBLIST = 0x70000000;
-enum SHT_MIPS_MSYM = 0x70000001;
-enum SHT_MIPS_CONFLICT = 0x70000002;
-enum SHT_MIPS_GPTAB = 0x70000003;
-enum SHT_MIPS_UCODE = 0x70000004;
-enum SHT_MIPS_DEBUG = 0x70000005;
-enum SHT_MIPS_REGINFO = 0x70000006;
-enum SHT_MIPS_PACKAGE = 0x70000007;
-enum SHT_MIPS_PACKSYM = 0x70000008;
-enum SHT_MIPS_RELD = 0x70000009;
-enum SHT_MIPS_IFACE = 0x7000000b;
-enum SHT_MIPS_CONTENT = 0x7000000c;
-enum SHT_MIPS_OPTIONS = 0x7000000d;
-enum SHT_MIPS_SHDR = 0x70000010;
-enum SHT_MIPS_FDESC = 0x70000011;
-enum SHT_MIPS_EXTSYM = 0x70000012;
-enum SHT_MIPS_DENSE = 0x70000013;
-enum SHT_MIPS_PDESC = 0x70000014;
-enum SHT_MIPS_LOCSYM = 0x70000015;
-enum SHT_MIPS_AUXSYM = 0x70000016;
-enum SHT_MIPS_OPTSYM = 0x70000017;
-enum SHT_MIPS_LOCSTR = 0x70000018;
-enum SHT_MIPS_LINE = 0x70000019;
-enum SHT_MIPS_RFDESC = 0x7000001a;
-enum SHT_MIPS_DELTASYM = 0x7000001b;
-enum SHT_MIPS_DELTAINST = 0x7000001c;
-enum SHT_MIPS_DELTACLASS = 0x7000001d;
-enum SHT_MIPS_DWARF = 0x7000001e;
-enum SHT_MIPS_DELTADECL = 0x7000001f;
-enum SHT_MIPS_SYMBOL_LIB = 0x70000020;
-enum SHT_MIPS_EVENTS = 0x70000021;
-enum SHT_MIPS_TRANSLATE = 0x70000022;
-enum SHT_MIPS_PIXIE = 0x70000023;
-enum SHT_MIPS_XLATE = 0x70000024;
-enum SHT_MIPS_XLATE_DEBUG = 0x70000025;
-enum SHT_MIPS_WHIRL = 0x70000026;
-enum SHT_MIPS_EH_REGION = 0x70000027;
-enum SHT_MIPS_XLATE_OLD = 0x70000028;
-enum SHT_MIPS_PDR_EXCEPTION = 0x70000029;
-
-enum SHF_MIPS_GPREL = 0x10000000;
-enum SHF_MIPS_MERGE = 0x20000000;
-enum SHF_MIPS_ADDR = 0x40000000;
-enum SHF_MIPS_STRINGS = 0x80000000;
-enum SHF_MIPS_NOSTRIP = 0x08000000;
-enum SHF_MIPS_LOCAL = 0x04000000;
-enum SHF_MIPS_NAMES = 0x02000000;
-enum SHF_MIPS_NODUPE = 0x01000000;
-enum STO_MIPS_DEFAULT = 0x0;
-enum STO_MIPS_INTERNAL = 0x1;
-enum STO_MIPS_HIDDEN = 0x2;
-enum STO_MIPS_PROTECTED = 0x3;
-enum STO_MIPS_PLT = 0x8;
-enum STO_MIPS_SC_ALIGN_UNUSED = 0xff;
-enum STB_MIPS_SPLIT_COMMON = 13;
-
-union Elf32_gptab
-{
- struct _gt_header
- {
- Elf32_Word gt_current_g_value;
- Elf32_Word gt_unused;
- } _gt_header gt_header;
- struct _gt_entry
- {
- Elf32_Word gt_g_value;
- Elf32_Word gt_bytes;
- } _gt_entry gt_entry;
-}
-
-struct Elf32_RegInfo
-{
- Elf32_Word ri_gprmask;
- Elf32_Word[4] ri_cprmask;
- Elf32_Sword ri_gp_value;
-}
-
-struct Elf_Options
-{
- ubyte kind;
- ubyte size;
- Elf32_Section section;
- Elf32_Word info;
-}
-
-enum ODK_NULL = 0;
-enum ODK_REGINFO = 1;
-enum ODK_EXCEPTIONS = 2;
-enum ODK_PAD = 3;
-enum ODK_HWPATCH = 4;
-enum ODK_FILL = 5;
-enum ODK_TAGS = 6;
-enum ODK_HWAND = 7;
-enum ODK_HWOR = 8;
-
-enum OEX_FPU_MIN = 0x1f;
-enum OEX_FPU_MAX = 0x1f00;
-enum OEX_PAGE0 = 0x10000;
-enum OEX_SMM = 0x20000;
-enum OEX_FPDBUG = 0x40000;
-enum OEX_PRECISEFP = OEX_FPDBUG;
-enum OEX_DISMISS = 0x80000;
-
-enum OEX_FPU_INVAL = 0x10;
-enum OEX_FPU_DIV0 = 0x08;
-enum OEX_FPU_OFLO = 0x04;
-enum OEX_FPU_UFLO = 0x02;
-enum OEX_FPU_INEX = 0x01;
-
-enum OHW_R4KEOP = 0x1;
-enum OHW_R8KPFETCH = 0x2;
-enum OHW_R5KEOP = 0x4;
-enum OHW_R5KCVTL = 0x8;
-
-enum OPAD_PREFIX = 0x1;
-enum OPAD_POSTFIX = 0x2;
-enum OPAD_SYMBOL = 0x4;
-
-struct Elf_Options_Hw
-{
- Elf32_Word hwp_flags1;
- Elf32_Word hwp_flags2;
-}
-
-enum OHWA0_R4KEOP_CHECKED = 0x00000001;
-enum OHWA1_R4KEOP_CLEAN = 0x00000002;
-
-enum R_MIPS_NONE = 0;
-enum R_MIPS_16 = 1;
-enum R_MIPS_32 = 2;
-enum R_MIPS_REL32 = 3;
-enum R_MIPS_26 = 4;
-enum R_MIPS_HI16 = 5;
-enum R_MIPS_LO16 = 6;
-enum R_MIPS_GPREL16 = 7;
-enum R_MIPS_LITERAL = 8;
-enum R_MIPS_GOT16 = 9;
-enum R_MIPS_PC16 = 10;
-enum R_MIPS_CALL16 = 11;
-enum R_MIPS_GPREL32 = 12;
-
-enum R_MIPS_SHIFT5 = 16;
-enum R_MIPS_SHIFT6 = 17;
-enum R_MIPS_64 = 18;
-enum R_MIPS_GOT_DISP = 19;
-enum R_MIPS_GOT_PAGE = 20;
-enum R_MIPS_GOT_OFST = 21;
-enum R_MIPS_GOT_HI16 = 22;
-enum R_MIPS_GOT_LO16 = 23;
-enum R_MIPS_SUB = 24;
-enum R_MIPS_INSERT_A = 25;
-enum R_MIPS_INSERT_B = 26;
-enum R_MIPS_DELETE = 27;
-enum R_MIPS_HIGHER = 28;
-enum R_MIPS_HIGHEST = 29;
-enum R_MIPS_CALL_HI16 = 30;
-enum R_MIPS_CALL_LO16 = 31;
-enum R_MIPS_SCN_DISP = 32;
-enum R_MIPS_REL16 = 33;
-enum R_MIPS_ADD_IMMEDIATE = 34;
-enum R_MIPS_PJUMP = 35;
-enum R_MIPS_RELGOT = 36;
-enum R_MIPS_JALR = 37;
-enum R_MIPS_TLS_DTPMOD32 = 38;
-enum R_MIPS_TLS_DTPREL32 = 39;
-enum R_MIPS_TLS_DTPMOD64 = 40;
-enum R_MIPS_TLS_DTPREL64 = 41;
-enum R_MIPS_TLS_GD = 42;
-enum R_MIPS_TLS_LDM = 43;
-enum R_MIPS_TLS_DTPREL_HI16 = 44;
-enum R_MIPS_TLS_DTPREL_LO16 = 45;
-enum R_MIPS_TLS_GOTTPREL = 46;
-enum R_MIPS_TLS_TPREL32 = 47;
-enum R_MIPS_TLS_TPREL64 = 48;
-enum R_MIPS_TLS_TPREL_HI16 = 49;
-enum R_MIPS_TLS_TPREL_LO16 = 50;
-enum R_MIPS_GLOB_DAT = 51;
-enum R_MIPS_COPY = 126;
-enum R_MIPS_JUMP_SLOT = 127;
-enum R_MIPS_NUM = 128;
-
-enum PT_MIPS_REGINFO = 0x70000000;
-enum PT_MIPS_RTPROC = 0x70000001;
-enum PT_MIPS_OPTIONS = 0x70000002;
-
-enum PF_MIPS_LOCAL = 0x10000000;
-
-enum DT_MIPS_RLD_VERSION = 0x70000001;
-enum DT_MIPS_TIME_STAMP = 0x70000002;
-enum DT_MIPS_ICHECKSUM = 0x70000003;
-enum DT_MIPS_IVERSION = 0x70000004;
-enum DT_MIPS_FLAGS = 0x70000005;
-enum DT_MIPS_BASE_ADDRESS = 0x70000006;
-enum DT_MIPS_MSYM = 0x70000007;
-enum DT_MIPS_CONFLICT = 0x70000008;
-enum DT_MIPS_LIBLIST = 0x70000009;
-enum DT_MIPS_LOCAL_GOTNO = 0x7000000a;
-enum DT_MIPS_CONFLICTNO = 0x7000000b;
-enum DT_MIPS_LIBLISTNO = 0x70000010;
-enum DT_MIPS_SYMTABNO = 0x70000011;
-enum DT_MIPS_UNREFEXTNO = 0x70000012;
-enum DT_MIPS_GOTSYM = 0x70000013;
-enum DT_MIPS_HIPAGENO = 0x70000014;
-enum DT_MIPS_RLD_MAP = 0x70000016;
-enum DT_MIPS_DELTA_CLASS = 0x70000017;
-enum DT_MIPS_DELTA_CLASS_NO = 0x70000018;
-enum DT_MIPS_DELTA_INSTANCE = 0x70000019;
-enum DT_MIPS_DELTA_INSTANCE_NO = 0x7000001a;
-enum DT_MIPS_DELTA_RELOC = 0x7000001b;
-enum DT_MIPS_DELTA_RELOC_NO = 0x7000001c;
-enum DT_MIPS_DELTA_SYM = 0x7000001d;
-enum DT_MIPS_DELTA_SYM_NO = 0x7000001e;
-enum DT_MIPS_DELTA_CLASSSYM = 0x70000020;
-enum DT_MIPS_DELTA_CLASSSYM_NO = 0x70000021;
-enum DT_MIPS_CXX_FLAGS = 0x70000022;
-enum DT_MIPS_PIXIE_INIT = 0x70000023;
-enum DT_MIPS_SYMBOL_LIB = 0x70000024;
-enum DT_MIPS_LOCALPAGE_GOTIDX = 0x70000025;
-enum DT_MIPS_LOCAL_GOTIDX = 0x70000026;
-enum DT_MIPS_HIDDEN_GOTIDX = 0x70000027;
-enum DT_MIPS_PROTECTED_GOTIDX = 0x70000028;
-enum DT_MIPS_OPTIONS = 0x70000029;
-enum DT_MIPS_INTERFACE = 0x7000002a;
-enum DT_MIPS_DYNSTR_ALIGN = 0x7000002b;
-enum DT_MIPS_INTERFACE_SIZE = 0x7000002c;
-enum DT_MIPS_RLD_TEXT_RESOLVE_ADDR = 0x7000002d;
-enum DT_MIPS_PERF_SUFFIX = 0x7000002e;
-enum DT_MIPS_COMPACT_SIZE = 0x7000002f;
-enum DT_MIPS_GP_VALUE = 0x70000030;
-enum DT_MIPS_AUX_DYNAMIC = 0x70000031;
-enum DT_MIPS_PLTGOT = 0x70000032;
-enum DT_MIPS_RWPLT = 0x70000034;
-enum DT_MIPS_NUM = 0x35;
-
-enum RHF_NONE = 0;
-enum RHF_QUICKSTART = (1 << 0);
-enum RHF_NOTPOT = (1 << 1);
-enum RHF_NO_LIBRARY_REPLACEMENT = (1 << 2);
-enum RHF_NO_MOVE = (1 << 3);
-enum RHF_SGI_ONLY = (1 << 4);
-enum RHF_GUARANTEE_INIT = (1 << 5);
-enum RHF_DELTA_C_PLUS_PLUS = (1 << 6);
-enum RHF_GUARANTEE_START_INIT = (1 << 7);
-enum RHF_PIXIE = (1 << 8);
-enum RHF_DEFAULT_DELAY_LOAD = (1 << 9);
-enum RHF_REQUICKSTART = (1 << 10);
-enum RHF_REQUICKSTARTED = (1 << 11);
-enum RHF_CORD = (1 << 12);
-enum RHF_NO_UNRES_UNDEF = (1 << 13);
-enum RHF_RLD_ORDER_SAFE = (1 << 14);
-
-struct Elf32_Lib
-{
- Elf32_Word l_name;
- Elf32_Word l_time_stamp;
- Elf32_Word l_checksum;
- Elf32_Word l_version;
- Elf32_Word l_flags;
-}
-
-struct Elf64_Lib
-{
- Elf64_Word l_name;
- Elf64_Word l_time_stamp;
- Elf64_Word l_checksum;
- Elf64_Word l_version;
- Elf64_Word l_flags;
-}
-
-enum LL_NONE = 0;
-enum LL_EXACT_MATCH = (1 << 0);
-enum LL_IGNORE_INT_VER = (1 << 1);
-enum LL_REQUIRE_MINOR = (1 << 2);
-enum LL_EXPORTS = (1 << 3);
-enum LL_DELAY_LOAD = (1 << 4);
-enum LL_DELTA = (1 << 5);
-
-alias Elf32_Addr Elf32_Conflict;
-
-enum EF_PARISC_TRAPNIL = 0x00010000;
-enum EF_PARISC_EXT = 0x00020000;
-enum EF_PARISC_LSB = 0x00040000;
-enum EF_PARISC_WIDE = 0x00080000;
-enum EF_PARISC_NO_KABP = 0x00100000;
-enum EF_PARISC_LAZYSWAP = 0x00400000;
-enum EF_PARISC_ARCH = 0x0000ffff;
-
-enum EFA_PARISC_1_0 = 0x020b;
-enum EFA_PARISC_1_1 = 0x0210;
-enum EFA_PARISC_2_0 = 0x0214;
-
-enum SHN_PARISC_ANSI_COMMON = 0xff00;
-enum SHN_PARISC_HUGE_COMMON = 0xff01;
-
-enum SHT_PARISC_EXT = 0x70000000;
-enum SHT_PARISC_UNWIND = 0x70000001;
-enum SHT_PARISC_DOC = 0x70000002;
-
-enum SHF_PARISC_SHORT = 0x20000000;
-enum SHF_PARISC_HUGE = 0x40000000;
-enum SHF_PARISC_SBP = 0x80000000;
-
-enum STT_PARISC_MILLICODE = 13;
-
-enum STT_HP_OPAQUE = (STT_LOOS + 0x1);
-enum STT_HP_STUB = (STT_LOOS + 0x2);
-
-enum R_PARISC_NONE = 0;
-enum R_PARISC_DIR32 = 1;
-enum R_PARISC_DIR21L = 2;
-enum R_PARISC_DIR17R = 3;
-enum R_PARISC_DIR17F = 4;
-enum R_PARISC_DIR14R = 6;
-enum R_PARISC_PCREL32 = 9;
-enum R_PARISC_PCREL21L = 10;
-enum R_PARISC_PCREL17R = 11;
-enum R_PARISC_PCREL17F = 12;
-enum R_PARISC_PCREL14R = 14;
-enum R_PARISC_DPREL21L = 18;
-enum R_PARISC_DPREL14R = 22;
-enum R_PARISC_GPREL21L = 26;
-enum R_PARISC_GPREL14R = 30;
-enum R_PARISC_LTOFF21L = 34;
-enum R_PARISC_LTOFF14R = 38;
-enum R_PARISC_SECREL32 = 41;
-enum R_PARISC_SEGBASE = 48;
-enum R_PARISC_SEGREL32 = 49;
-enum R_PARISC_PLTOFF21L = 50;
-enum R_PARISC_PLTOFF14R = 54;
-enum R_PARISC_LTOFF_FPTR32 = 57;
-enum R_PARISC_LTOFF_FPTR21L = 58;
-enum R_PARISC_LTOFF_FPTR14R = 62;
-enum R_PARISC_FPTR64 = 64;
-enum R_PARISC_PLABEL32 = 65;
-enum R_PARISC_PLABEL21L = 66;
-enum R_PARISC_PLABEL14R = 70;
-enum R_PARISC_PCREL64 = 72;
-enum R_PARISC_PCREL22F = 74;
-enum R_PARISC_PCREL14WR = 75;
-enum R_PARISC_PCREL14DR = 76;
-enum R_PARISC_PCREL16F = 77;
-enum R_PARISC_PCREL16WF = 78;
-enum R_PARISC_PCREL16DF = 79;
-enum R_PARISC_DIR64 = 80;
-enum R_PARISC_DIR14WR = 83;
-enum R_PARISC_DIR14DR = 84;
-enum R_PARISC_DIR16F = 85;
-enum R_PARISC_DIR16WF = 86;
-enum R_PARISC_DIR16DF = 87;
-enum R_PARISC_GPREL64 = 88;
-enum R_PARISC_GPREL14WR = 91;
-enum R_PARISC_GPREL14DR = 92;
-enum R_PARISC_GPREL16F = 93;
-enum R_PARISC_GPREL16WF = 94;
-enum R_PARISC_GPREL16DF = 95;
-enum R_PARISC_LTOFF64 = 96;
-enum R_PARISC_LTOFF14WR = 99;
-enum R_PARISC_LTOFF14DR = 100;
-enum R_PARISC_LTOFF16F = 101;
-enum R_PARISC_LTOFF16WF = 102;
-enum R_PARISC_LTOFF16DF = 103;
-enum R_PARISC_SECREL64 = 104;
-enum R_PARISC_SEGREL64 = 112;
-enum R_PARISC_PLTOFF14WR = 115;
-enum R_PARISC_PLTOFF14DR = 116;
-enum R_PARISC_PLTOFF16F = 117;
-enum R_PARISC_PLTOFF16WF = 118;
-enum R_PARISC_PLTOFF16DF = 119;
-enum R_PARISC_LTOFF_FPTR64 = 120;
-enum R_PARISC_LTOFF_FPTR14WR = 123;
-enum R_PARISC_LTOFF_FPTR14DR = 124;
-enum R_PARISC_LTOFF_FPTR16F = 125;
-enum R_PARISC_LTOFF_FPTR16WF = 126;
-enum R_PARISC_LTOFF_FPTR16DF = 127;
-enum R_PARISC_LORESERVE = 128;
-enum R_PARISC_COPY = 128;
-enum R_PARISC_IPLT = 129;
-enum R_PARISC_EPLT = 130;
-enum R_PARISC_TPREL32 = 153;
-enum R_PARISC_TPREL21L = 154;
-enum R_PARISC_TPREL14R = 158;
-enum R_PARISC_LTOFF_TP21L = 162;
-enum R_PARISC_LTOFF_TP14R = 166;
-enum R_PARISC_LTOFF_TP14F = 167;
-enum R_PARISC_TPREL64 = 216;
-enum R_PARISC_TPREL14WR = 219;
-enum R_PARISC_TPREL14DR = 220;
-enum R_PARISC_TPREL16F = 221;
-enum R_PARISC_TPREL16WF = 222;
-enum R_PARISC_TPREL16DF = 223;
-enum R_PARISC_LTOFF_TP64 = 224;
-enum R_PARISC_LTOFF_TP14WR = 227;
-enum R_PARISC_LTOFF_TP14DR = 228;
-enum R_PARISC_LTOFF_TP16F = 229;
-enum R_PARISC_LTOFF_TP16WF = 230;
-enum R_PARISC_LTOFF_TP16DF = 231;
-enum R_PARISC_GNU_VTENTRY = 232;
-enum R_PARISC_GNU_VTINHERIT = 233;
-enum R_PARISC_TLS_GD21L = 234;
-enum R_PARISC_TLS_GD14R = 235;
-enum R_PARISC_TLS_GDCALL = 236;
-enum R_PARISC_TLS_LDM21L = 237;
-enum R_PARISC_TLS_LDM14R = 238;
-enum R_PARISC_TLS_LDMCALL = 239;
-enum R_PARISC_TLS_LDO21L = 240;
-enum R_PARISC_TLS_LDO14R = 241;
-enum R_PARISC_TLS_DTPMOD32 = 242;
-enum R_PARISC_TLS_DTPMOD64 = 243;
-enum R_PARISC_TLS_DTPOFF32 = 244;
-enum R_PARISC_TLS_DTPOFF64 = 245;
-enum R_PARISC_TLS_LE21L = R_PARISC_TPREL21L;
-enum R_PARISC_TLS_LE14R = R_PARISC_TPREL14R;
-enum R_PARISC_TLS_IE21L = R_PARISC_LTOFF_TP21L;
-enum R_PARISC_TLS_IE14R = R_PARISC_LTOFF_TP14R;
-enum R_PARISC_TLS_TPREL32 = R_PARISC_TPREL32;
-enum R_PARISC_TLS_TPREL64 = R_PARISC_TPREL64;
-enum R_PARISC_HIRESERVE = 255;
-
-enum PT_HP_TLS = (PT_LOOS + 0x0);
-enum PT_HP_CORE_NONE = (PT_LOOS + 0x1);
-enum PT_HP_CORE_VERSION = (PT_LOOS + 0x2);
-enum PT_HP_CORE_KERNEL = (PT_LOOS + 0x3);
-enum PT_HP_CORE_COMM = (PT_LOOS + 0x4);
-enum PT_HP_CORE_PROC = (PT_LOOS + 0x5);
-enum PT_HP_CORE_LOADABLE = (PT_LOOS + 0x6);
-enum PT_HP_CORE_STACK = (PT_LOOS + 0x7);
-enum PT_HP_CORE_SHM = (PT_LOOS + 0x8);
-enum PT_HP_CORE_MMF = (PT_LOOS + 0x9);
-enum PT_HP_PARALLEL = (PT_LOOS + 0x10);
-enum PT_HP_FASTBIND = (PT_LOOS + 0x11);
-enum PT_HP_OPT_ANNOT = (PT_LOOS + 0x12);
-enum PT_HP_HSL_ANNOT = (PT_LOOS + 0x13);
-enum PT_HP_STACK = (PT_LOOS + 0x14);
-
-enum PT_PARISC_ARCHEXT = 0x70000000;
-enum PT_PARISC_UNWIND = 0x70000001;
-
-enum PF_PARISC_SBP = 0x08000000;
-
-enum PF_HP_PAGE_SIZE = 0x00100000;
-enum PF_HP_FAR_SHARED = 0x00200000;
-enum PF_HP_NEAR_SHARED = 0x00400000;
-enum PF_HP_CODE = 0x01000000;
-enum PF_HP_MODIFY = 0x02000000;
-enum PF_HP_LAZYSWAP = 0x04000000;
-enum PF_HP_SBP = 0x08000000;
-
-enum EF_ALPHA_32BIT = 1;
-enum EF_ALPHA_CANRELAX = 2;
-enum SHT_ALPHA_DEBUG = 0x70000001;
-enum SHT_ALPHA_REGINFO = 0x70000002;
-
-enum SHF_ALPHA_GPREL = 0x10000000;
-enum STO_ALPHA_NOPV = 0x80;
-enum STO_ALPHA_STD_GPLOAD = 0x88;
-
-enum R_ALPHA_NONE = 0;
-enum R_ALPHA_REFLONG = 1;
-enum R_ALPHA_REFQUAD = 2;
-enum R_ALPHA_GPREL32 = 3;
-enum R_ALPHA_LITERAL = 4;
-enum R_ALPHA_LITUSE = 5;
-enum R_ALPHA_GPDISP = 6;
-enum R_ALPHA_BRADDR = 7;
-enum R_ALPHA_HINT = 8;
-enum R_ALPHA_SREL16 = 9;
-enum R_ALPHA_SREL32 = 10;
-enum R_ALPHA_SREL64 = 11;
-enum R_ALPHA_GPRELHIGH = 17;
-enum R_ALPHA_GPRELLOW = 18;
-enum R_ALPHA_GPREL16 = 19;
-enum R_ALPHA_COPY = 24;
-enum R_ALPHA_GLOB_DAT = 25;
-enum R_ALPHA_JMP_SLOT = 26;
-enum R_ALPHA_RELATIVE = 27;
-enum R_ALPHA_TLS_GD_HI = 28;
-enum R_ALPHA_TLSGD = 29;
-enum R_ALPHA_TLS_LDM = 30;
-enum R_ALPHA_DTPMOD64 = 31;
-enum R_ALPHA_GOTDTPREL = 32;
-enum R_ALPHA_DTPREL64 = 33;
-enum R_ALPHA_DTPRELHI = 34;
-enum R_ALPHA_DTPRELLO = 35;
-enum R_ALPHA_DTPREL16 = 36;
-enum R_ALPHA_GOTTPREL = 37;
-enum R_ALPHA_TPREL64 = 38;
-enum R_ALPHA_TPRELHI = 39;
-enum R_ALPHA_TPRELLO = 40;
-enum R_ALPHA_TPREL16 = 41;
-enum R_ALPHA_NUM = 46;
-enum LITUSE_ALPHA_ADDR = 0;
-enum LITUSE_ALPHA_BASE = 1;
-enum LITUSE_ALPHA_BYTOFF = 2;
-enum LITUSE_ALPHA_JSR = 3;
-enum LITUSE_ALPHA_TLS_GD = 4;
-enum LITUSE_ALPHA_TLS_LDM = 5;
-enum DT_ALPHA_PLTRO = (DT_LOPROC + 0);
-enum DT_ALPHA_NUM = 1;
-enum EF_PPC_EMB = 0x80000000;
-enum EF_PPC_RELOCATABLE = 0x00010000;
-enum EF_PPC_RELOCATABLE_LIB = 0x00008000;
-enum R_PPC_NONE = 0;
-enum R_PPC_ADDR32 = 1;
-enum R_PPC_ADDR24 = 2;
-enum R_PPC_ADDR16 = 3;
-enum R_PPC_ADDR16_LO = 4;
-enum R_PPC_ADDR16_HI = 5;
-enum R_PPC_ADDR16_HA = 6;
-enum R_PPC_ADDR14 = 7;
-enum R_PPC_ADDR14_BRTAKEN = 8;
-enum R_PPC_ADDR14_BRNTAKEN = 9;
-enum R_PPC_REL24 = 10;
-enum R_PPC_REL14 = 11;
-enum R_PPC_REL14_BRTAKEN = 12;
-enum R_PPC_REL14_BRNTAKEN = 13;
-enum R_PPC_GOT16 = 14;
-enum R_PPC_GOT16_LO = 15;
-enum R_PPC_GOT16_HI = 16;
-enum R_PPC_GOT16_HA = 17;
-enum R_PPC_PLTREL24 = 18;
-enum R_PPC_COPY = 19;
-enum R_PPC_GLOB_DAT = 20;
-enum R_PPC_JMP_SLOT = 21;
-enum R_PPC_RELATIVE = 22;
-enum R_PPC_LOCAL24PC = 23;
-enum R_PPC_UADDR32 = 24;
-enum R_PPC_UADDR16 = 25;
-enum R_PPC_REL32 = 26;
-enum R_PPC_PLT32 = 27;
-enum R_PPC_PLTREL32 = 28;
-enum R_PPC_PLT16_LO = 29;
-enum R_PPC_PLT16_HI = 30;
-enum R_PPC_PLT16_HA = 31;
-enum R_PPC_SDAREL16 = 32;
-enum R_PPC_SECTOFF = 33;
-enum R_PPC_SECTOFF_LO = 34;
-enum R_PPC_SECTOFF_HI = 35;
-enum R_PPC_SECTOFF_HA = 36;
-enum R_PPC_TLS = 67;
-enum R_PPC_DTPMOD32 = 68;
-enum R_PPC_TPREL16 = 69;
-enum R_PPC_TPREL16_LO = 70;
-enum R_PPC_TPREL16_HI = 71;
-enum R_PPC_TPREL16_HA = 72;
-enum R_PPC_TPREL32 = 73;
-enum R_PPC_DTPREL16 = 74;
-enum R_PPC_DTPREL16_LO = 75;
-enum R_PPC_DTPREL16_HI = 76;
-enum R_PPC_DTPREL16_HA = 77;
-enum R_PPC_DTPREL32 = 78;
-enum R_PPC_GOT_TLSGD16 = 79;
-enum R_PPC_GOT_TLSGD16_LO = 80;
-enum R_PPC_GOT_TLSGD16_HI = 81;
-enum R_PPC_GOT_TLSGD16_HA = 82;
-enum R_PPC_GOT_TLSLD16 = 83;
-enum R_PPC_GOT_TLSLD16_LO = 84;
-enum R_PPC_GOT_TLSLD16_HI = 85;
-enum R_PPC_GOT_TLSLD16_HA = 86;
-enum R_PPC_GOT_TPREL16 = 87;
-enum R_PPC_GOT_TPREL16_LO = 88;
-enum R_PPC_GOT_TPREL16_HI = 89;
-enum R_PPC_GOT_TPREL16_HA = 90;
-enum R_PPC_GOT_DTPREL16 = 91;
-enum R_PPC_GOT_DTPREL16_LO = 92;
-enum R_PPC_GOT_DTPREL16_HI = 93;
-enum R_PPC_GOT_DTPREL16_HA = 94;
-enum R_PPC_EMB_NADDR32 = 101;
-enum R_PPC_EMB_NADDR16 = 102;
-enum R_PPC_EMB_NADDR16_LO = 103;
-enum R_PPC_EMB_NADDR16_HI = 104;
-enum R_PPC_EMB_NADDR16_HA = 105;
-enum R_PPC_EMB_SDAI16 = 106;
-enum R_PPC_EMB_SDA2I16 = 107;
-enum R_PPC_EMB_SDA2REL = 108;
-enum R_PPC_EMB_SDA21 = 109;
-enum R_PPC_EMB_MRKREF = 110;
-enum R_PPC_EMB_RELSEC16 = 111;
-enum R_PPC_EMB_RELST_LO = 112;
-enum R_PPC_EMB_RELST_HI = 113;
-enum R_PPC_EMB_RELST_HA = 114;
-enum R_PPC_EMB_BIT_FLD = 115;
-enum R_PPC_EMB_RELSDA = 116;
-enum R_PPC_DIAB_SDA21_LO = 180;
-enum R_PPC_DIAB_SDA21_HI = 181;
-enum R_PPC_DIAB_SDA21_HA = 182;
-enum R_PPC_DIAB_RELSDA_LO = 183;
-enum R_PPC_DIAB_RELSDA_HI = 184;
-enum R_PPC_DIAB_RELSDA_HA = 185;
-enum R_PPC_IRELATIVE = 248;
-enum R_PPC_REL16 = 249;
-enum R_PPC_REL16_LO = 250;
-enum R_PPC_REL16_HI = 251;
-enum R_PPC_REL16_HA = 252;
-enum R_PPC_TOC16 = 255;
-enum DT_PPC_GOT = (DT_LOPROC + 0);
-enum DT_PPC_NUM = 1;
-enum R_PPC64_NONE = R_PPC_NONE;
-enum R_PPC64_ADDR32 = R_PPC_ADDR32;
-enum R_PPC64_ADDR24 = R_PPC_ADDR24;
-enum R_PPC64_ADDR16 = R_PPC_ADDR16;
-enum R_PPC64_ADDR16_LO = R_PPC_ADDR16_LO;
-enum R_PPC64_ADDR16_HI = R_PPC_ADDR16_HI;
-enum R_PPC64_ADDR16_HA = R_PPC_ADDR16_HA;
-enum R_PPC64_ADDR14 = R_PPC_ADDR14;
-enum R_PPC64_ADDR14_BRTAKEN = R_PPC_ADDR14_BRTAKEN;
-enum R_PPC64_ADDR14_BRNTAKEN = R_PPC_ADDR14_BRNTAKEN;
-enum R_PPC64_REL24 = R_PPC_REL24;
-enum R_PPC64_REL14 = R_PPC_REL14;
-enum R_PPC64_REL14_BRTAKEN = R_PPC_REL14_BRTAKEN;
-enum R_PPC64_REL14_BRNTAKEN = R_PPC_REL14_BRNTAKEN;
-enum R_PPC64_GOT16 = R_PPC_GOT16;
-enum R_PPC64_GOT16_LO = R_PPC_GOT16_LO;
-enum R_PPC64_GOT16_HI = R_PPC_GOT16_HI;
-enum R_PPC64_GOT16_HA = R_PPC_GOT16_HA;
-
-enum R_PPC64_COPY = R_PPC_COPY;
-enum R_PPC64_GLOB_DAT = R_PPC_GLOB_DAT;
-enum R_PPC64_JMP_SLOT = R_PPC_JMP_SLOT;
-enum R_PPC64_RELATIVE = R_PPC_RELATIVE;
-
-enum R_PPC64_UADDR32 = R_PPC_UADDR32;
-enum R_PPC64_UADDR16 = R_PPC_UADDR16;
-enum R_PPC64_REL32 = R_PPC_REL32;
-enum R_PPC64_PLT32 = R_PPC_PLT32;
-enum R_PPC64_PLTREL32 = R_PPC_PLTREL32;
-enum R_PPC64_PLT16_LO = R_PPC_PLT16_LO;
-enum R_PPC64_PLT16_HI = R_PPC_PLT16_HI;
-enum R_PPC64_PLT16_HA = R_PPC_PLT16_HA;
-
-enum R_PPC64_SECTOFF = R_PPC_SECTOFF;
-enum R_PPC64_SECTOFF_LO = R_PPC_SECTOFF_LO;
-enum R_PPC64_SECTOFF_HI = R_PPC_SECTOFF_HI;
-enum R_PPC64_SECTOFF_HA = R_PPC_SECTOFF_HA;
-enum R_PPC64_ADDR30 = 37;
-enum R_PPC64_ADDR64 = 38;
-enum R_PPC64_ADDR16_HIGHER = 39;
-enum R_PPC64_ADDR16_HIGHERA = 40;
-enum R_PPC64_ADDR16_HIGHEST = 41;
-enum R_PPC64_ADDR16_HIGHESTA = 42;
-enum R_PPC64_UADDR64 = 43;
-enum R_PPC64_REL64 = 44;
-enum R_PPC64_PLT64 = 45;
-enum R_PPC64_PLTREL64 = 46;
-enum R_PPC64_TOC16 = 47;
-enum R_PPC64_TOC16_LO = 48;
-enum R_PPC64_TOC16_HI = 49;
-enum R_PPC64_TOC16_HA = 50;
-enum R_PPC64_TOC = 51;
-enum R_PPC64_PLTGOT16 = 52;
-enum R_PPC64_PLTGOT16_LO = 53;
-enum R_PPC64_PLTGOT16_HI = 54;
-enum R_PPC64_PLTGOT16_HA = 55;
-
-enum R_PPC64_ADDR16_DS = 56;
-enum R_PPC64_ADDR16_LO_DS = 57;
-enum R_PPC64_GOT16_DS = 58;
-enum R_PPC64_GOT16_LO_DS = 59;
-enum R_PPC64_PLT16_LO_DS = 60;
-enum R_PPC64_SECTOFF_DS = 61;
-enum R_PPC64_SECTOFF_LO_DS = 62;
-enum R_PPC64_TOC16_DS = 63;
-enum R_PPC64_TOC16_LO_DS = 64;
-enum R_PPC64_PLTGOT16_DS = 65;
-enum R_PPC64_PLTGOT16_LO_DS = 66;
-enum R_PPC64_TLS = 67;
-enum R_PPC64_DTPMOD64 = 68;
-enum R_PPC64_TPREL16 = 69;
-enum R_PPC64_TPREL16_LO = 70;
-enum R_PPC64_TPREL16_HI = 71;
-enum R_PPC64_TPREL16_HA = 72;
-enum R_PPC64_TPREL64 = 73;
-enum R_PPC64_DTPREL16 = 74;
-enum R_PPC64_DTPREL16_LO = 75;
-enum R_PPC64_DTPREL16_HI = 76;
-enum R_PPC64_DTPREL16_HA = 77;
-enum R_PPC64_DTPREL64 = 78;
-enum R_PPC64_GOT_TLSGD16 = 79;
-enum R_PPC64_GOT_TLSGD16_LO = 80;
-enum R_PPC64_GOT_TLSGD16_HI = 81;
-enum R_PPC64_GOT_TLSGD16_HA = 82;
-enum R_PPC64_GOT_TLSLD16 = 83;
-enum R_PPC64_GOT_TLSLD16_LO = 84;
-enum R_PPC64_GOT_TLSLD16_HI = 85;
-enum R_PPC64_GOT_TLSLD16_HA = 86;
-enum R_PPC64_GOT_TPREL16_DS = 87;
-enum R_PPC64_GOT_TPREL16_LO_DS = 88;
-enum R_PPC64_GOT_TPREL16_HI = 89;
-enum R_PPC64_GOT_TPREL16_HA = 90;
-enum R_PPC64_GOT_DTPREL16_DS = 91;
-enum R_PPC64_GOT_DTPREL16_LO_DS = 92;
-enum R_PPC64_GOT_DTPREL16_HI = 93;
-enum R_PPC64_GOT_DTPREL16_HA = 94;
-enum R_PPC64_TPREL16_DS = 95;
-enum R_PPC64_TPREL16_LO_DS = 96;
-enum R_PPC64_TPREL16_HIGHER = 97;
-enum R_PPC64_TPREL16_HIGHERA = 98;
-enum R_PPC64_TPREL16_HIGHEST = 99;
-enum R_PPC64_TPREL16_HIGHESTA = 100;
-enum R_PPC64_DTPREL16_DS = 101;
-enum R_PPC64_DTPREL16_LO_DS = 102;
-enum R_PPC64_DTPREL16_HIGHER = 103;
-enum R_PPC64_DTPREL16_HIGHERA = 104;
-enum R_PPC64_DTPREL16_HIGHEST = 105;
-enum R_PPC64_DTPREL16_HIGHESTA = 106;
-enum R_PPC64_JMP_IREL = 247;
-enum R_PPC64_IRELATIVE = 248;
-enum R_PPC64_REL16 = 249;
-enum R_PPC64_REL16_LO = 250;
-enum R_PPC64_REL16_HI = 251;
-enum R_PPC64_REL16_HA = 252;
-enum DT_PPC64_GLINK = (DT_LOPROC + 0);
-enum DT_PPC64_OPD = (DT_LOPROC + 1);
-enum DT_PPC64_OPDSZ = (DT_LOPROC + 2);
-enum DT_PPC64_NUM = 3;
-enum EF_ARM_RELEXEC = 0x01;
-enum EF_ARM_HASENTRY = 0x02;
-enum EF_ARM_INTERWORK = 0x04;
-enum EF_ARM_APCS_26 = 0x08;
-enum EF_ARM_APCS_FLOAT = 0x10;
-enum EF_ARM_PIC = 0x20;
-enum EF_ARM_ALIGN8 = 0x40;
-enum EF_ARM_NEW_ABI = 0x80;
-enum EF_ARM_OLD_ABI = 0x100;
-enum EF_ARM_SOFT_FLOAT = 0x200;
-enum EF_ARM_VFP_FLOAT = 0x400;
-enum EF_ARM_MAVERICK_FLOAT = 0x800;
-
-enum EF_ARM_ABI_FLOAT_SOFT = 0x200;
-enum EF_ARM_ABI_FLOAT_HARD = 0x400;
-enum EF_ARM_SYMSARESORTED = 0x04;
-enum EF_ARM_DYNSYMSUSESEGIDX = 0x08;
-enum EF_ARM_MAPSYMSFIRST = 0x10;
-enum EF_ARM_EABIMASK = 0XFF000000;
-enum EF_ARM_BE8 = 0x00800000;
-enum EF_ARM_LE8 = 0x00400000;
-
-extern (D) auto EF_ARM_EABI_VERSION(F)(F flags) { return flags & EF_ARM_EABIMASK; }
-enum EF_ARM_EABI_UNKNOWN = 0x00000000;
-enum EF_ARM_EABI_VER1 = 0x01000000;
-enum EF_ARM_EABI_VER2 = 0x02000000;
-enum EF_ARM_EABI_VER3 = 0x03000000;
-enum EF_ARM_EABI_VER4 = 0x04000000;
-enum EF_ARM_EABI_VER5 = 0x05000000;
-enum STT_ARM_TFUNC = STT_LOPROC;
-enum STT_ARM_16BIT = STT_HIPROC;
-enum SHF_ARM_ENTRYSECT = 0x10000000;
-enum SHF_ARM_COMDEF = 0x80000000;
-enum PF_ARM_SB = 0x10000000;
-enum PF_ARM_PI = 0x20000000;
-enum PF_ARM_ABS = 0x40000000;
-enum PT_ARM_EXIDX = (PT_LOPROC + 1);
-enum SHT_ARM_EXIDX = (SHT_LOPROC + 1);
-enum SHT_ARM_PREEMPTMAP = (SHT_LOPROC + 2);
-enum SHT_ARM_ATTRIBUTES = (SHT_LOPROC + 3);
-
-enum R_AARCH64_NONE = 0;
-enum R_AARCH64_ABS64 = 257;
-enum R_AARCH64_ABS32 = 258;
-enum R_AARCH64_COPY = 1024;
-enum R_AARCH64_GLOB_DAT = 1025;
-enum R_AARCH64_JUMP_SLOT = 1026;
-enum R_AARCH64_RELATIVE = 1027;
-enum R_AARCH64_TLS_DTPMOD64 = 1028;
-enum R_AARCH64_TLS_DTPREL64 = 1029;
-enum R_AARCH64_TLS_TPREL64 = 1030;
-enum R_AARCH64_TLSDESC = 1031;
-
-enum R_ARM_NONE = 0;
-enum R_ARM_PC24 = 1;
-enum R_ARM_ABS32 = 2;
-enum R_ARM_REL32 = 3;
-enum R_ARM_PC13 = 4;
-enum R_ARM_ABS16 = 5;
-enum R_ARM_ABS12 = 6;
-enum R_ARM_THM_ABS5 = 7;
-enum R_ARM_ABS8 = 8;
-enum R_ARM_SBREL32 = 9;
-enum R_ARM_THM_PC22 = 10;
-enum R_ARM_THM_PC8 = 11;
-enum R_ARM_AMP_VCALL9 = 12;
-enum R_ARM_SWI24 = 13;
-enum R_ARM_TLS_DESC = 13;
-enum R_ARM_THM_SWI8 = 14;
-enum R_ARM_XPC25 = 15;
-enum R_ARM_THM_XPC22 = 16;
-enum R_ARM_TLS_DTPMOD32 = 17;
-enum R_ARM_TLS_DTPOFF32 = 18;
-enum R_ARM_TLS_TPOFF32 = 19;
-enum R_ARM_COPY = 20;
-enum R_ARM_GLOB_DAT = 21;
-enum R_ARM_JUMP_SLOT = 22;
-enum R_ARM_RELATIVE = 23;
-enum R_ARM_GOTOFF = 24;
-enum R_ARM_GOTPC = 25;
-enum R_ARM_GOT32 = 26;
-enum R_ARM_PLT32 = 27;
-enum R_ARM_ALU_PCREL_7_0 = 32;
-enum R_ARM_ALU_PCREL_15_8 = 33;
-enum R_ARM_ALU_PCREL_23_15 = 34;
-enum R_ARM_LDR_SBREL_11_0 = 35;
-enum R_ARM_ALU_SBREL_19_12 = 36;
-enum R_ARM_ALU_SBREL_27_20 = 37;
-enum R_ARM_TLS_GOTDESC = 90;
-enum R_ARM_TLS_CALL = 91;
-enum R_ARM_TLS_DESCSEQ = 92;
-enum R_ARM_THM_TLS_CALL = 93;
-enum R_ARM_GNU_VTENTRY = 100;
-enum R_ARM_GNU_VTINHERIT = 101;
-enum R_ARM_THM_PC11 = 102;
-enum R_ARM_THM_PC9 = 103;
-enum R_ARM_TLS_GD32 = 104;
-enum R_ARM_TLS_LDM32 = 105;
-enum R_ARM_TLS_LDO32 = 106;
-enum R_ARM_TLS_IE32 = 107;
-enum R_ARM_TLS_LE32 = 108;
-enum R_ARM_THM_TLS_DESCSEQ = 129;
-enum R_ARM_IRELATIVE = 160;
-enum R_ARM_RXPC25 = 249;
-enum R_ARM_RSBREL32 = 250;
-enum R_ARM_THM_RPC22 = 251;
-enum R_ARM_RREL32 = 252;
-enum R_ARM_RABS22 = 253;
-enum R_ARM_RPC24 = 254;
-enum R_ARM_RBASE = 255;
-enum R_ARM_NUM = 256;
-enum EF_IA_64_MASKOS = 0x0000000f;
-enum EF_IA_64_ABI64 = 0x00000010;
-enum EF_IA_64_ARCH = 0xff000000;
-enum PT_IA_64_ARCHEXT = (PT_LOPROC + 0);
-enum PT_IA_64_UNWIND = (PT_LOPROC + 1);
-enum PT_IA_64_HP_OPT_ANOT = (PT_LOOS + 0x12);
-enum PT_IA_64_HP_HSL_ANOT = (PT_LOOS + 0x13);
-enum PT_IA_64_HP_STACK = (PT_LOOS + 0x14);
-enum PF_IA_64_NORECOV = 0x80000000;
-enum SHT_IA_64_EXT = (SHT_LOPROC + 0);
-enum SHT_IA_64_UNWIND = (SHT_LOPROC + 1);
-enum SHF_IA_64_SHORT = 0x10000000;
-enum SHF_IA_64_NORECOV = 0x20000000;
-enum DT_IA_64_PLT_RESERVE = (DT_LOPROC + 0);
-enum DT_IA_64_NUM = 1;
-enum R_IA64_NONE = 0x00;
-enum R_IA64_IMM14 = 0x21;
-enum R_IA64_IMM22 = 0x22;
-enum R_IA64_IMM64 = 0x23;
-enum R_IA64_DIR32MSB = 0x24;
-enum R_IA64_DIR32LSB = 0x25;
-enum R_IA64_DIR64MSB = 0x26;
-enum R_IA64_DIR64LSB = 0x27;
-enum R_IA64_GPREL22 = 0x2a;
-enum R_IA64_GPREL64I = 0x2b;
-enum R_IA64_GPREL32MSB = 0x2c;
-enum R_IA64_GPREL32LSB = 0x2d;
-enum R_IA64_GPREL64MSB = 0x2e;
-enum R_IA64_GPREL64LSB = 0x2f;
-enum R_IA64_LTOFF22 = 0x32;
-enum R_IA64_LTOFF64I = 0x33;
-enum R_IA64_PLTOFF22 = 0x3a;
-enum R_IA64_PLTOFF64I = 0x3b;
-enum R_IA64_PLTOFF64MSB = 0x3e;
-enum R_IA64_PLTOFF64LSB = 0x3f;
-enum R_IA64_FPTR64I = 0x43;
-enum R_IA64_FPTR32MSB = 0x44;
-enum R_IA64_FPTR32LSB = 0x45;
-enum R_IA64_FPTR64MSB = 0x46;
-enum R_IA64_FPTR64LSB = 0x47;
-enum R_IA64_PCREL60B = 0x48;
-enum R_IA64_PCREL21B = 0x49;
-enum R_IA64_PCREL21M = 0x4a;
-enum R_IA64_PCREL21F = 0x4b;
-enum R_IA64_PCREL32MSB = 0x4c;
-enum R_IA64_PCREL32LSB = 0x4d;
-enum R_IA64_PCREL64MSB = 0x4e;
-enum R_IA64_PCREL64LSB = 0x4f;
-enum R_IA64_LTOFF_FPTR22 = 0x52;
-enum R_IA64_LTOFF_FPTR64I = 0x53;
-enum R_IA64_LTOFF_FPTR32MSB = 0x54;
-enum R_IA64_LTOFF_FPTR32LSB = 0x55;
-enum R_IA64_LTOFF_FPTR64MSB = 0x56;
-enum R_IA64_LTOFF_FPTR64LSB = 0x57;
-enum R_IA64_SEGREL32MSB = 0x5c;
-enum R_IA64_SEGREL32LSB = 0x5d;
-enum R_IA64_SEGREL64MSB = 0x5e;
-enum R_IA64_SEGREL64LSB = 0x5f;
-enum R_IA64_SECREL32MSB = 0x64;
-enum R_IA64_SECREL32LSB = 0x65;
-enum R_IA64_SECREL64MSB = 0x66;
-enum R_IA64_SECREL64LSB = 0x67;
-enum R_IA64_REL32MSB = 0x6c;
-enum R_IA64_REL32LSB = 0x6d;
-enum R_IA64_REL64MSB = 0x6e;
-enum R_IA64_REL64LSB = 0x6f;
-enum R_IA64_LTV32MSB = 0x74;
-enum R_IA64_LTV32LSB = 0x75;
-enum R_IA64_LTV64MSB = 0x76;
-enum R_IA64_LTV64LSB = 0x77;
-enum R_IA64_PCREL21BI = 0x79;
-enum R_IA64_PCREL22 = 0x7a;
-enum R_IA64_PCREL64I = 0x7b;
-enum R_IA64_IPLTMSB = 0x80;
-enum R_IA64_IPLTLSB = 0x81;
-enum R_IA64_COPY = 0x84;
-enum R_IA64_SUB = 0x85;
-enum R_IA64_LTOFF22X = 0x86;
-enum R_IA64_LDXMOV = 0x87;
-enum R_IA64_TPREL14 = 0x91;
-enum R_IA64_TPREL22 = 0x92;
-enum R_IA64_TPREL64I = 0x93;
-enum R_IA64_TPREL64MSB = 0x96;
-enum R_IA64_TPREL64LSB = 0x97;
-enum R_IA64_LTOFF_TPREL22 = 0x9a;
-enum R_IA64_DTPMOD64MSB = 0xa6;
-enum R_IA64_DTPMOD64LSB = 0xa7;
-enum R_IA64_LTOFF_DTPMOD22 = 0xaa;
-enum R_IA64_DTPREL14 = 0xb1;
-enum R_IA64_DTPREL22 = 0xb2;
-enum R_IA64_DTPREL64I = 0xb3;
-enum R_IA64_DTPREL32MSB = 0xb4;
-enum R_IA64_DTPREL32LSB = 0xb5;
-enum R_IA64_DTPREL64MSB = 0xb6;
-enum R_IA64_DTPREL64LSB = 0xb7;
-enum R_IA64_LTOFF_DTPREL22 = 0xba;
-enum EF_SH_MACH_MASK = 0x1f;
-enum EF_SH_UNKNOWN = 0x0;
-enum EF_SH1 = 0x1;
-enum EF_SH2 = 0x2;
-enum EF_SH3 = 0x3;
-enum EF_SH_DSP = 0x4;
-enum EF_SH3_DSP = 0x5;
-enum EF_SH4AL_DSP = 0x6;
-enum EF_SH3E = 0x8;
-enum EF_SH4 = 0x9;
-enum EF_SH2E = 0xb;
-enum EF_SH4A = 0xc;
-enum EF_SH2A = 0xd;
-enum EF_SH4_NOFPU = 0x10;
-enum EF_SH4A_NOFPU = 0x11;
-enum EF_SH4_NOMMU_NOFPU = 0x12;
-enum EF_SH2A_NOFPU = 0x13;
-enum EF_SH3_NOMMU = 0x14;
-enum EF_SH2A_SH4_NOFPU = 0x15;
-enum EF_SH2A_SH3_NOFPU = 0x16;
-enum EF_SH2A_SH4 = 0x17;
-enum EF_SH2A_SH3E = 0x18;
-enum R_SH_NONE = 0;
-enum R_SH_DIR32 = 1;
-enum R_SH_REL32 = 2;
-enum R_SH_DIR8WPN = 3;
-enum R_SH_IND12W = 4;
-enum R_SH_DIR8WPL = 5;
-enum R_SH_DIR8WPZ = 6;
-enum R_SH_DIR8BP = 7;
-enum R_SH_DIR8W = 8;
-enum R_SH_DIR8L = 9;
-enum R_SH_SWITCH16 = 25;
-enum R_SH_SWITCH32 = 26;
-enum R_SH_USES = 27;
-enum R_SH_COUNT = 28;
-enum R_SH_ALIGN = 29;
-enum R_SH_CODE = 30;
-enum R_SH_DATA = 31;
-enum R_SH_LABEL = 32;
-enum R_SH_SWITCH8 = 33;
-enum R_SH_GNU_VTINHERIT = 34;
-enum R_SH_GNU_VTENTRY = 35;
-enum R_SH_TLS_GD_32 = 144;
-enum R_SH_TLS_LD_32 = 145;
-enum R_SH_TLS_LDO_32 = 146;
-enum R_SH_TLS_IE_32 = 147;
-enum R_SH_TLS_LE_32 = 148;
-enum R_SH_TLS_DTPMOD32 = 149;
-enum R_SH_TLS_DTPOFF32 = 150;
-enum R_SH_TLS_TPOFF32 = 151;
-enum R_SH_GOT32 = 160;
-enum R_SH_PLT32 = 161;
-enum R_SH_COPY = 162;
-enum R_SH_GLOB_DAT = 163;
-enum R_SH_JMP_SLOT = 164;
-enum R_SH_RELATIVE = 165;
-enum R_SH_GOTOFF = 166;
-enum R_SH_GOTPC = 167;
-enum R_SH_NUM = 256;
-
-enum EF_S390_HIGH_GPRS = 0x00000001;
-
-enum R_390_NONE = 0;
-enum R_390_8 = 1;
-enum R_390_12 = 2;
-enum R_390_16 = 3;
-enum R_390_32 = 4;
-enum R_390_PC32 = 5;
-enum R_390_GOT12 = 6;
-enum R_390_GOT32 = 7;
-enum R_390_PLT32 = 8;
-enum R_390_COPY = 9;
-enum R_390_GLOB_DAT = 10;
-enum R_390_JMP_SLOT = 11;
-enum R_390_RELATIVE = 12;
-enum R_390_GOTOFF32 = 13;
-enum R_390_GOTPC = 14;
-enum R_390_GOT16 = 15;
-enum R_390_PC16 = 16;
-enum R_390_PC16DBL = 17;
-enum R_390_PLT16DBL = 18;
-enum R_390_PC32DBL = 19;
-enum R_390_PLT32DBL = 20;
-enum R_390_GOTPCDBL = 21;
-enum R_390_64 = 22;
-enum R_390_PC64 = 23;
-enum R_390_GOT64 = 24;
-enum R_390_PLT64 = 25;
-enum R_390_GOTENT = 26;
-enum R_390_GOTOFF16 = 27;
-enum R_390_GOTOFF64 = 28;
-enum R_390_GOTPLT12 = 29;
-enum R_390_GOTPLT16 = 30;
-enum R_390_GOTPLT32 = 31;
-enum R_390_GOTPLT64 = 32;
-enum R_390_GOTPLTENT = 33;
-enum R_390_PLTOFF16 = 34;
-enum R_390_PLTOFF32 = 35;
-enum R_390_PLTOFF64 = 36;
-enum R_390_TLS_LOAD = 37;
-enum R_390_TLS_GDCALL = 38;
-enum R_390_TLS_LDCALL = 39;
-enum R_390_TLS_GD32 = 40;
-enum R_390_TLS_GD64 = 41;
-enum R_390_TLS_GOTIE12 = 42;
-enum R_390_TLS_GOTIE32 = 43;
-enum R_390_TLS_GOTIE64 = 44;
-enum R_390_TLS_LDM32 = 45;
-enum R_390_TLS_LDM64 = 46;
-enum R_390_TLS_IE32 = 47;
-enum R_390_TLS_IE64 = 48;
-enum R_390_TLS_IEENT = 49;
-enum R_390_TLS_LE32 = 50;
-enum R_390_TLS_LE64 = 51;
-enum R_390_TLS_LDO32 = 52;
-enum R_390_TLS_LDO64 = 53;
-enum R_390_TLS_DTPMOD = 54;
-enum R_390_TLS_DTPOFF = 55;
-enum R_390_TLS_TPOFF = 56;
-enum R_390_20 = 57;
-enum R_390_GOT20 = 58;
-enum R_390_GOTPLT20 = 59;
-enum R_390_TLS_GOTIE20 = 60;
-enum R_390_IRELATIVE = 61;
-enum R_390_NUM = 62;
-enum R_CRIS_NONE = 0;
-enum R_CRIS_8 = 1;
-enum R_CRIS_16 = 2;
-enum R_CRIS_32 = 3;
-enum R_CRIS_8_PCREL = 4;
-enum R_CRIS_16_PCREL = 5;
-enum R_CRIS_32_PCREL = 6;
-enum R_CRIS_GNU_VTINHERIT = 7;
-enum R_CRIS_GNU_VTENTRY = 8;
-enum R_CRIS_COPY = 9;
-enum R_CRIS_GLOB_DAT = 10;
-enum R_CRIS_JUMP_SLOT = 11;
-enum R_CRIS_RELATIVE = 12;
-enum R_CRIS_16_GOT = 13;
-enum R_CRIS_32_GOT = 14;
-enum R_CRIS_16_GOTPLT = 15;
-enum R_CRIS_32_GOTPLT = 16;
-enum R_CRIS_32_GOTREL = 17;
-enum R_CRIS_32_PLT_GOTREL = 18;
-enum R_CRIS_32_PLT_PCREL = 19;
-
-enum R_CRIS_NUM = 20;
-enum R_X86_64_NONE = 0;
-enum R_X86_64_64 = 1;
-enum R_X86_64_PC32 = 2;
-enum R_X86_64_GOT32 = 3;
-enum R_X86_64_PLT32 = 4;
-enum R_X86_64_COPY = 5;
-enum R_X86_64_GLOB_DAT = 6;
-enum R_X86_64_JUMP_SLOT = 7;
-enum R_X86_64_RELATIVE = 8;
-enum R_X86_64_GOTPCREL = 9;
-enum R_X86_64_32 = 10;
-enum R_X86_64_32S = 11;
-enum R_X86_64_16 = 12;
-enum R_X86_64_PC16 = 13;
-enum R_X86_64_8 = 14;
-enum R_X86_64_PC8 = 15;
-enum R_X86_64_DTPMOD64 = 16;
-enum R_X86_64_DTPOFF64 = 17;
-enum R_X86_64_TPOFF64 = 18;
-enum R_X86_64_TLSGD = 19;
-enum R_X86_64_TLSLD = 20;
-enum R_X86_64_DTPOFF32 = 21;
-enum R_X86_64_GOTTPOFF = 22;
-enum R_X86_64_TPOFF32 = 23;
-enum R_X86_64_PC64 = 24;
-enum R_X86_64_GOTOFF64 = 25;
-enum R_X86_64_GOTPC32 = 26;
-enum R_X86_64_GOT64 = 27;
-enum R_X86_64_GOTPCREL64 = 28;
-enum R_X86_64_GOTPC64 = 29;
-enum R_X86_64_GOTPLT64 = 30;
-enum R_X86_64_PLTOFF64 = 31;
-enum R_X86_64_SIZE32 = 32;
-enum R_X86_64_SIZE64 = 33;
-enum R_X86_64_GOTPC32_TLSDESC = 34;
-enum R_X86_64_TLSDESC_CALL = 35;
-enum R_X86_64_TLSDESC = 36;
-enum R_X86_64_IRELATIVE = 37;
-enum R_X86_64_RELATIVE64 = 38;
-
-enum R_X86_64_NUM = 39;
-enum R_MN10300_NONE = 0;
-enum R_MN10300_32 = 1;
-enum R_MN10300_16 = 2;
-enum R_MN10300_8 = 3;
-enum R_MN10300_PCREL32 = 4;
-enum R_MN10300_PCREL16 = 5;
-enum R_MN10300_PCREL8 = 6;
-enum R_MN10300_GNU_VTINHERIT = 7;
-enum R_MN10300_GNU_VTENTRY = 8;
-enum R_MN10300_24 = 9;
-enum R_MN10300_GOTPC32 = 10;
-enum R_MN10300_GOTPC16 = 11;
-enum R_MN10300_GOTOFF32 = 12;
-enum R_MN10300_GOTOFF24 = 13;
-enum R_MN10300_GOTOFF16 = 14;
-enum R_MN10300_PLT32 = 15;
-enum R_MN10300_PLT16 = 16;
-enum R_MN10300_GOT32 = 17;
-enum R_MN10300_GOT24 = 18;
-enum R_MN10300_GOT16 = 19;
-enum R_MN10300_COPY = 20;
-enum R_MN10300_GLOB_DAT = 21;
-enum R_MN10300_JMP_SLOT = 22;
-enum R_MN10300_RELATIVE = 23;
-enum R_MN10300_TLS_GD = 24;
-enum R_MN10300_TLS_LD = 25;
-enum R_MN10300_TLS_LDO = 26;
-enum R_MN10300_TLS_GOTIE = 27;
-enum R_MN10300_TLS_IE = 28;
-enum R_MN10300_TLS_LE = 29;
-enum R_MN10300_TLS_DTPMOD = 30;
-enum R_MN10300_TLS_DTPOFF = 31;
-enum R_MN10300_TLS_TPOFF = 32;
-enum R_MN10300_SYM_DIFF = 33;
-enum R_MN10300_ALIGN = 34;
-enum R_MN10300_NUM = 35;
-enum R_M32R_NONE = 0;
-enum R_M32R_16 = 1;
-enum R_M32R_32 = 2;
-enum R_M32R_24 = 3;
-enum R_M32R_10_PCREL = 4;
-enum R_M32R_18_PCREL = 5;
-enum R_M32R_26_PCREL = 6;
-enum R_M32R_HI16_ULO = 7;
-enum R_M32R_HI16_SLO = 8;
-enum R_M32R_LO16 = 9;
-enum R_M32R_SDA16 = 10;
-enum R_M32R_GNU_VTINHERIT = 11;
-enum R_M32R_GNU_VTENTRY = 12;
-enum R_M32R_16_RELA = 33;
-enum R_M32R_32_RELA = 34;
-enum R_M32R_24_RELA = 35;
-enum R_M32R_10_PCREL_RELA = 36;
-enum R_M32R_18_PCREL_RELA = 37;
-enum R_M32R_26_PCREL_RELA = 38;
-enum R_M32R_HI16_ULO_RELA = 39;
-enum R_M32R_HI16_SLO_RELA = 40;
-enum R_M32R_LO16_RELA = 41;
-enum R_M32R_SDA16_RELA = 42;
-enum R_M32R_RELA_GNU_VTINHERIT = 43;
-enum R_M32R_RELA_GNU_VTENTRY = 44;
-enum R_M32R_REL32 = 45;
-
-enum R_M32R_GOT24 = 48;
-enum R_M32R_26_PLTREL = 49;
-enum R_M32R_COPY = 50;
-enum R_M32R_GLOB_DAT = 51;
-enum R_M32R_JMP_SLOT = 52;
-enum R_M32R_RELATIVE = 53;
-enum R_M32R_GOTOFF = 54;
-enum R_M32R_GOTPC24 = 55;
-enum R_M32R_GOT16_HI_ULO = 56;
-enum R_M32R_GOT16_HI_SLO = 57;
-enum R_M32R_GOT16_LO = 58;
-enum R_M32R_GOTPC_HI_ULO = 59;
-enum R_M32R_GOTPC_HI_SLO = 60;
-enum R_M32R_GOTPC_LO = 61;
-enum R_M32R_GOTOFF_HI_ULO = 62;
-enum R_M32R_GOTOFF_HI_SLO = 63;
-enum R_M32R_GOTOFF_LO = 64;
-enum R_M32R_NUM = 256;
-enum R_TILEPRO_NONE = 0;
-enum R_TILEPRO_32 = 1;
-enum R_TILEPRO_16 = 2;
-enum R_TILEPRO_8 = 3;
-enum R_TILEPRO_32_PCREL = 4;
-enum R_TILEPRO_16_PCREL = 5;
-enum R_TILEPRO_8_PCREL = 6;
-enum R_TILEPRO_LO16 = 7;
-enum R_TILEPRO_HI16 = 8;
-enum R_TILEPRO_HA16 = 9;
-enum R_TILEPRO_COPY = 10;
-enum R_TILEPRO_GLOB_DAT = 11;
-enum R_TILEPRO_JMP_SLOT = 12;
-enum R_TILEPRO_RELATIVE = 13;
-enum R_TILEPRO_BROFF_X1 = 14;
-enum R_TILEPRO_JOFFLONG_X1 = 15;
-enum R_TILEPRO_JOFFLONG_X1_PLT = 16;
-enum R_TILEPRO_IMM8_X0 = 17;
-enum R_TILEPRO_IMM8_Y0 = 18;
-enum R_TILEPRO_IMM8_X1 = 19;
-enum R_TILEPRO_IMM8_Y1 = 20;
-enum R_TILEPRO_MT_IMM15_X1 = 21;
-enum R_TILEPRO_MF_IMM15_X1 = 22;
-enum R_TILEPRO_IMM16_X0 = 23;
-enum R_TILEPRO_IMM16_X1 = 24;
-enum R_TILEPRO_IMM16_X0_LO = 25;
-enum R_TILEPRO_IMM16_X1_LO = 26;
-enum R_TILEPRO_IMM16_X0_HI = 27;
-enum R_TILEPRO_IMM16_X1_HI = 28;
-enum R_TILEPRO_IMM16_X0_HA = 29;
-enum R_TILEPRO_IMM16_X1_HA = 30;
-enum R_TILEPRO_IMM16_X0_PCREL = 31;
-enum R_TILEPRO_IMM16_X1_PCREL = 32;
-enum R_TILEPRO_IMM16_X0_LO_PCREL = 33;
-enum R_TILEPRO_IMM16_X1_LO_PCREL = 34;
-enum R_TILEPRO_IMM16_X0_HI_PCREL = 35;
-enum R_TILEPRO_IMM16_X1_HI_PCREL = 36;
-enum R_TILEPRO_IMM16_X0_HA_PCREL = 37;
-enum R_TILEPRO_IMM16_X1_HA_PCREL = 38;
-enum R_TILEPRO_IMM16_X0_GOT = 39;
-enum R_TILEPRO_IMM16_X1_GOT = 40;
-enum R_TILEPRO_IMM16_X0_GOT_LO = 41;
-enum R_TILEPRO_IMM16_X1_GOT_LO = 42;
-enum R_TILEPRO_IMM16_X0_GOT_HI = 43;
-enum R_TILEPRO_IMM16_X1_GOT_HI = 44;
-enum R_TILEPRO_IMM16_X0_GOT_HA = 45;
-enum R_TILEPRO_IMM16_X1_GOT_HA = 46;
-enum R_TILEPRO_MMSTART_X0 = 47;
-enum R_TILEPRO_MMEND_X0 = 48;
-enum R_TILEPRO_MMSTART_X1 = 49;
-enum R_TILEPRO_MMEND_X1 = 50;
-enum R_TILEPRO_SHAMT_X0 = 51;
-enum R_TILEPRO_SHAMT_X1 = 52;
-enum R_TILEPRO_SHAMT_Y0 = 53;
-enum R_TILEPRO_SHAMT_Y1 = 54;
-enum R_TILEPRO_DEST_IMM8_X1 = 55;
-enum R_TILEPRO_TLS_GD_CALL = 60;
-enum R_TILEPRO_IMM8_X0_TLS_GD_ADD = 61;
-enum R_TILEPRO_IMM8_X1_TLS_GD_ADD = 62;
-enum R_TILEPRO_IMM8_Y0_TLS_GD_ADD = 63;
-enum R_TILEPRO_IMM8_Y1_TLS_GD_ADD = 64;
-enum R_TILEPRO_TLS_IE_LOAD = 65;
-enum R_TILEPRO_IMM16_X0_TLS_GD = 66;
-enum R_TILEPRO_IMM16_X1_TLS_GD = 67;
-enum R_TILEPRO_IMM16_X0_TLS_GD_LO = 68;
-enum R_TILEPRO_IMM16_X1_TLS_GD_LO = 69;
-enum R_TILEPRO_IMM16_X0_TLS_GD_HI = 70;
-enum R_TILEPRO_IMM16_X1_TLS_GD_HI = 71;
-enum R_TILEPRO_IMM16_X0_TLS_GD_HA = 72;
-enum R_TILEPRO_IMM16_X1_TLS_GD_HA = 73;
-enum R_TILEPRO_IMM16_X0_TLS_IE = 74;
-enum R_TILEPRO_IMM16_X1_TLS_IE = 75;
-enum R_TILEPRO_IMM16_X0_TLS_IE_LO = 76;
-enum R_TILEPRO_IMM16_X1_TLS_IE_LO = 77;
-enum R_TILEPRO_IMM16_X0_TLS_IE_HI = 78;
-enum R_TILEPRO_IMM16_X1_TLS_IE_HI = 79;
-enum R_TILEPRO_IMM16_X0_TLS_IE_HA = 80;
-enum R_TILEPRO_IMM16_X1_TLS_IE_HA = 81;
-enum R_TILEPRO_TLS_DTPMOD32 = 82;
-enum R_TILEPRO_TLS_DTPOFF32 = 83;
-enum R_TILEPRO_TLS_TPOFF32 = 84;
-enum R_TILEPRO_IMM16_X0_TLS_LE = 85;
-enum R_TILEPRO_IMM16_X1_TLS_LE = 86;
-enum R_TILEPRO_IMM16_X0_TLS_LE_LO = 87;
-enum R_TILEPRO_IMM16_X1_TLS_LE_LO = 88;
-enum R_TILEPRO_IMM16_X0_TLS_LE_HI = 89;
-enum R_TILEPRO_IMM16_X1_TLS_LE_HI = 90;
-enum R_TILEPRO_IMM16_X0_TLS_LE_HA = 91;
-enum R_TILEPRO_IMM16_X1_TLS_LE_HA = 92;
-
-enum R_TILEPRO_GNU_VTINHERIT = 128;
-enum R_TILEPRO_GNU_VTENTRY = 129;
-
-enum R_TILEPRO_NUM = 130;
-enum R_TILEGX_NONE = 0;
-enum R_TILEGX_64 = 1;
-enum R_TILEGX_32 = 2;
-enum R_TILEGX_16 = 3;
-enum R_TILEGX_8 = 4;
-enum R_TILEGX_64_PCREL = 5;
-enum R_TILEGX_32_PCREL = 6;
-enum R_TILEGX_16_PCREL = 7;
-enum R_TILEGX_8_PCREL = 8;
-enum R_TILEGX_HW0 = 9;
-enum R_TILEGX_HW1 = 10;
-enum R_TILEGX_HW2 = 11;
-enum R_TILEGX_HW3 = 12;
-enum R_TILEGX_HW0_LAST = 13;
-enum R_TILEGX_HW1_LAST = 14;
-enum R_TILEGX_HW2_LAST = 15;
-enum R_TILEGX_COPY = 16;
-enum R_TILEGX_GLOB_DAT = 17;
-enum R_TILEGX_JMP_SLOT = 18;
-enum R_TILEGX_RELATIVE = 19;
-enum R_TILEGX_BROFF_X1 = 20;
-enum R_TILEGX_JUMPOFF_X1 = 21;
-enum R_TILEGX_JUMPOFF_X1_PLT = 22;
-enum R_TILEGX_IMM8_X0 = 23;
-enum R_TILEGX_IMM8_Y0 = 24;
-enum R_TILEGX_IMM8_X1 = 25;
-enum R_TILEGX_IMM8_Y1 = 26;
-enum R_TILEGX_DEST_IMM8_X1 = 27;
-enum R_TILEGX_MT_IMM14_X1 = 28;
-enum R_TILEGX_MF_IMM14_X1 = 29;
-enum R_TILEGX_MMSTART_X0 = 30;
-enum R_TILEGX_MMEND_X0 = 31;
-enum R_TILEGX_SHAMT_X0 = 32;
-enum R_TILEGX_SHAMT_X1 = 33;
-enum R_TILEGX_SHAMT_Y0 = 34;
-enum R_TILEGX_SHAMT_Y1 = 35;
-enum R_TILEGX_IMM16_X0_HW0 = 36;
-enum R_TILEGX_IMM16_X1_HW0 = 37;
-enum R_TILEGX_IMM16_X0_HW1 = 38;
-enum R_TILEGX_IMM16_X1_HW1 = 39;
-enum R_TILEGX_IMM16_X0_HW2 = 40;
-enum R_TILEGX_IMM16_X1_HW2 = 41;
-enum R_TILEGX_IMM16_X0_HW3 = 42;
-enum R_TILEGX_IMM16_X1_HW3 = 43;
-enum R_TILEGX_IMM16_X0_HW0_LAST = 44;
-enum R_TILEGX_IMM16_X1_HW0_LAST = 45;
-enum R_TILEGX_IMM16_X0_HW1_LAST = 46;
-enum R_TILEGX_IMM16_X1_HW1_LAST = 47;
-enum R_TILEGX_IMM16_X0_HW2_LAST = 48;
-enum R_TILEGX_IMM16_X1_HW2_LAST = 49;
-enum R_TILEGX_IMM16_X0_HW0_PCREL = 50;
-enum R_TILEGX_IMM16_X1_HW0_PCREL = 51;
-enum R_TILEGX_IMM16_X0_HW1_PCREL = 52;
-enum R_TILEGX_IMM16_X1_HW1_PCREL = 53;
-enum R_TILEGX_IMM16_X0_HW2_PCREL = 54;
-enum R_TILEGX_IMM16_X1_HW2_PCREL = 55;
-enum R_TILEGX_IMM16_X0_HW3_PCREL = 56;
-enum R_TILEGX_IMM16_X1_HW3_PCREL = 57;
-enum R_TILEGX_IMM16_X0_HW0_LAST_PCREL = 58;
-enum R_TILEGX_IMM16_X1_HW0_LAST_PCREL = 59;
-enum R_TILEGX_IMM16_X0_HW1_LAST_PCREL = 60;
-enum R_TILEGX_IMM16_X1_HW1_LAST_PCREL = 61;
-enum R_TILEGX_IMM16_X0_HW2_LAST_PCREL = 62;
-enum R_TILEGX_IMM16_X1_HW2_LAST_PCREL = 63;
-enum R_TILEGX_IMM16_X0_HW0_GOT = 64;
-enum R_TILEGX_IMM16_X1_HW0_GOT = 65;
-enum R_TILEGX_IMM16_X0_HW0_PLT_PCREL = 66;
-enum R_TILEGX_IMM16_X1_HW0_PLT_PCREL = 67;
-enum R_TILEGX_IMM16_X0_HW1_PLT_PCREL = 68;
-enum R_TILEGX_IMM16_X1_HW1_PLT_PCREL = 69;
-enum R_TILEGX_IMM16_X0_HW2_PLT_PCREL = 70;
-enum R_TILEGX_IMM16_X1_HW2_PLT_PCREL = 71;
-enum R_TILEGX_IMM16_X0_HW0_LAST_GOT = 72;
-enum R_TILEGX_IMM16_X1_HW0_LAST_GOT = 73;
-enum R_TILEGX_IMM16_X0_HW1_LAST_GOT = 74;
-enum R_TILEGX_IMM16_X1_HW1_LAST_GOT = 75;
-enum R_TILEGX_IMM16_X0_HW3_PLT_PCREL = 76;
-enum R_TILEGX_IMM16_X1_HW3_PLT_PCREL = 77;
-enum R_TILEGX_IMM16_X0_HW0_TLS_GD = 78;
-enum R_TILEGX_IMM16_X1_HW0_TLS_GD = 79;
-enum R_TILEGX_IMM16_X0_HW0_TLS_LE = 80;
-enum R_TILEGX_IMM16_X1_HW0_TLS_LE = 81;
-enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE = 82;
-enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE = 83;
-enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE = 84;
-enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE = 85;
-enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD = 86;
-enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD = 87;
-enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD = 88;
-enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD = 89;
-enum R_TILEGX_IMM16_X0_HW0_TLS_IE = 92;
-enum R_TILEGX_IMM16_X1_HW0_TLS_IE = 93;
-enum R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL = 94;
-enum R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL = 95;
-enum R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL = 96;
-enum R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL = 97;
-enum R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL = 98;
-enum R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL = 99;
-enum R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE = 100;
-enum R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE = 101;
-enum R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE = 102;
-enum R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE = 103;
-enum R_TILEGX_TLS_DTPMOD64 = 106;
-enum R_TILEGX_TLS_DTPOFF64 = 107;
-enum R_TILEGX_TLS_TPOFF64 = 108;
-enum R_TILEGX_TLS_DTPMOD32 = 109;
-enum R_TILEGX_TLS_DTPOFF32 = 110;
-enum R_TILEGX_TLS_TPOFF32 = 111;
-enum R_TILEGX_TLS_GD_CALL = 112;
-enum R_TILEGX_IMM8_X0_TLS_GD_ADD = 113;
-enum R_TILEGX_IMM8_X1_TLS_GD_ADD = 114;
-enum R_TILEGX_IMM8_Y0_TLS_GD_ADD = 115;
-enum R_TILEGX_IMM8_Y1_TLS_GD_ADD = 116;
-enum R_TILEGX_TLS_IE_LOAD = 117;
-enum R_TILEGX_IMM8_X0_TLS_ADD = 118;
-enum R_TILEGX_IMM8_X1_TLS_ADD = 119;
-enum R_TILEGX_IMM8_Y0_TLS_ADD = 120;
-enum R_TILEGX_IMM8_Y1_TLS_ADD = 121;
-
-enum R_TILEGX_GNU_VTINHERIT = 128;
-enum R_TILEGX_GNU_VTENTRY = 129;
-
-enum R_TILEGX_NUM = 130;
diff --git a/libphobos/libdruntime/core/sys/netbsd/sys/elf32.d b/libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
index ac623d6..ce7d8ba 100644
--- a/libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
+++ b/libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
@@ -13,108 +13,13 @@ nothrow:
import core.stdc.stdint;
public import core.sys.netbsd.sys.elf_common;
-alias uint16_t Elf32_Half;
-alias uint32_t Elf32_Word;
-alias int32_t Elf32_Sword;
alias uint64_t Elf32_Lword;
-alias uint32_t Elf32_Addr;
-alias uint32_t Elf32_Off;
alias Elf32_Word Elf32_Hashelt;
alias Elf32_Word Elf32_Size;
alias Elf32_Sword Elf32_Ssize;
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf32_Phdr
-{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-}
-
-struct Elf32_Dyn
-{
- Elf32_Sword d_tag;
- union _d_un
- {
- Elf32_Word d_val;
- Elf32_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-extern (D)
-{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-}
-
alias Elf_Note Elf32_Nhdr;
-struct Elf32_Move
-{
- Elf32_Lword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-extern (D)
-{
- auto ELF32_M_SYM(I)(I info) { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf32_Cap
{
Elf32_Word c_tag;
@@ -125,63 +30,7 @@ struct Elf32_Cap
} _c_un c_un;
}
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Half st_shndx;
-}
-
extern (D)
{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
-
-struct Elf32_Verdef
-{
- Elf32_Half vd_version;
- Elf32_Half vd_flags;
- Elf32_Half vd_ndx;
- Elf32_Half vd_cnt;
- Elf32_Word vd_hash;
- Elf32_Word vd_aux;
- Elf32_Word vd_next;
-}
-
-struct Elf32_Verdaux
-{
- Elf32_Word vda_name;
- Elf32_Word vda_next;
-}
-
-struct Elf32_Verneed
-{
- Elf32_Half vn_version;
- Elf32_Half vn_cnt;
- Elf32_Word vn_file;
- Elf32_Word vn_aux;
- Elf32_Word vn_next;
-}
-
-struct Elf32_Vernaux
-{
- Elf32_Word vna_hash;
- Elf32_Half vna_flags;
- Elf32_Half vna_other;
- Elf32_Word vna_name;
- Elf32_Word vna_next;
-}
-
-alias Elf32_Half Elf32_Versym;
-
-struct Elf32_Syminfo
-{
- Elf32_Half si_boundto;
- Elf32_Half si_flags;
-}
diff --git a/libphobos/libdruntime/core/sys/netbsd/sys/elf64.d b/libphobos/libdruntime/core/sys/netbsd/sys/elf64.d
index 659ac40..7fa9a8b 100644
--- a/libphobos/libdruntime/core/sys/netbsd/sys/elf64.d
+++ b/libphobos/libdruntime/core/sys/netbsd/sys/elf64.d
@@ -13,91 +13,13 @@ nothrow:
import core.stdc.stdint;
public import core.sys.netbsd.sys.elf_common;
-alias uint16_t Elf64_Half;
-alias uint32_t Elf64_Word;
-alias int32_t Elf64_Sword;
alias uint64_t Elf64_Lword;
-alias uint64_t Elf64_Xword;
-alias int64_t Elf64_Sxword;
-alias uint64_t Elf64_Addr;
-alias uint64_t Elf64_Off;
alias Elf64_Word Elf64_Hashelt;
alias Elf64_Xword Elf64_Size;
alias Elf64_Sxword Elf64_Ssize;
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-struct Elf64_Phdr
-{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
-}
-
-struct Elf64_Dyn
-{
- Elf64_Sxword d_tag;
- union _d_un
- {
- Elf64_Xword d_val;
- Elf64_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
extern (D)
{
- auto ELF64_R_SYM(I)(I i) { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type & 0xffffffff); }
-
auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; }
auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; }
auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; }
@@ -105,22 +27,6 @@ extern (D)
alias Elf_Note Elf64_Nhdr;
-struct Elf64_Move
-{
- Elf64_Lword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-
-extern (D)
-{
- auto ELF64_M_SYM(I)(I info) { return info >> 8; }
- auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF64_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf64_Cap
{
Elf64_Xword c_tag;
@@ -131,63 +37,7 @@ struct Elf64_Cap
} _c_un c_un;
}
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
extern (D)
{
- auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF64_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF64_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
-
-struct Elf64_Verdef
-{
- Elf64_Half vd_version;
- Elf64_Half vd_flags;
- Elf64_Half vd_ndx;
- Elf64_Half vd_cnt;
- Elf64_Word vd_hash;
- Elf64_Word vd_aux;
- Elf64_Word vd_next;
-}
-
-struct Elf64_Verdaux
-{
- Elf64_Word vda_name;
- Elf64_Word vda_next;
-}
-
-struct Elf64_Verneed
-{
- Elf64_Half vn_version;
- Elf64_Half vn_cnt;
- Elf64_Word vn_file;
- Elf64_Word vn_aux;
- Elf64_Word vn_next;
-}
-
-struct Elf64_Vernaux
-{
- Elf64_Word vna_hash;
- Elf64_Half vna_flags;
- Elf64_Half vna_other;
- Elf64_Word vna_name;
- Elf64_Word vna_next;
-}
-
-alias Elf64_Half Elf64_Versym;
-
-struct Elf64_Syminfo
-{
- Elf64_Half si_boundto;
- Elf64_Half si_flags;
-}
diff --git a/libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d b/libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
index 91d8933..6c911bd 100644
--- a/libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
+++ b/libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
@@ -11,6 +11,7 @@ pure:
nothrow:
import core.stdc.stdint;
+public import core.sys.elf;
struct Elf_Note
{
@@ -27,58 +28,7 @@ struct Elf_GNU_Hash_Header
uint32_t gh_shift2;
}
-enum EI_MAG0 = 0;
-enum EI_MAG1 = 1;
-enum EI_MAG2 = 2;
-enum EI_MAG3 = 3;
-enum EI_CLASS = 4;
-enum EI_DATA = 5;
-enum EI_VERSION = 6;
-enum EI_OSABI = 7;
-enum EI_ABIVERSION = 8;
enum OLD_EI_BRAND = 8;
-enum EI_PAD = 9;
-enum EI_NIDENT = 16;
-
-enum ELFMAG0 = 0x7f;
-enum ELFMAG1 = 'E';
-enum ELFMAG2 = 'L';
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = 0;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_LINUX = 3;
-enum ELFOSABI_HURD = 4;
-enum ELFOSABI_86OPEN = 5;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_MONTEREY = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_OPENVMS = 13;
-enum ELFOSABI_NSK = 14;
-enum ELFOSABI_AROS = 15;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
-enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
extern (D)
{
@@ -88,310 +38,31 @@ extern (D)
ehdr.e_ident[EI_MAG3] == ELFMAG3; }
}
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_LOOS = 0xfe00;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-enum EM_PARISC = 15;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_X86_64 = 62;
-enum EM_AMD64 = 62;
-enum EM_PDSP = 63;
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_VIDEOCORE = 95;
-enum EM_TMM_GPP = 96;
-enum EM_NS32K = 97;
-enum EM_TPC = 98;
-enum EM_SNP1K = 99;
-enum EM_ST200 = 100;
-enum EM_IP2K = 101;
-enum EM_MAX = 102;
-enum EM_CR = 103;
-enum EM_F2MC16 = 104;
-enum EM_MSP430 = 105;
-enum EM_BLACKFIN = 106;
-enum EM_SE_C33 = 107;
-enum EM_SEP = 108;
-enum EM_ARCA = 109;
-enum EM_UNICORE = 110;
-enum EM_AARCH64 = 183; /* AArch64 64-bit ARM microprocessor */
-
-/* Unofficial machine types follow */
-enum EM_AVR32 = 6317; /* used by NetBSD/avr32 */
-enum EM_ALPHA_EXP = 36902; /* used by NetBSD/alpha; obsolete */
+enum EM_AVR32 = 6317;
+enum EM_ALPHA_EXP = 36902;
enum EM_486 = 6;
enum EM_MIPS_RS4_BE = 10;
enum EM_ALPHA_STD = 41;
-enum EM_ALPHA = 0x9026;
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-enum SHT_LOOS = 0x60000000;
-enum SHT_LOSUNW = 0x6ffffff4;
enum SHT_SUNW_dof = 0x6ffffff4;
enum SHT_SUNW_cap = 0x6ffffff5;
enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
-enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
-enum SHT_SUNW_DEBUG = 0x6ffffff9;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
enum SHT_SUNW_verdef = 0x6ffffffd;
-enum SHT_GNU_verdef = 0x6ffffffd;
enum SHT_SUNW_verneed = 0x6ffffffe;
-enum SHT_GNU_verneed = 0x6ffffffe;
enum SHT_SUNW_versym = 0x6fffffff;
-enum SHT_GNU_versym = 0x6fffffff;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_LOPROC = 0x70000000;
-enum SHT_AMD64_UNWIND = 0x70000001;
-enum SHT_ARM_EXIDX = 0x70000001;
-enum SHT_ARM_PREEMPTMAP = 0x70000002;
-enum SHT_ARM_ATTRIBUTES = 0x70000003;
-enum SHT_ARM_DEBUGOVERLAY = 0x70000004;
-enum SHT_ARM_OVERLAYSECTION = 0x70000005;
-enum SHT_MIPS_REGINFO = 0x70000006;
-enum SHT_MIPS_OPTIONS = 0x7000000d;
-enum SHT_MIPS_DWARF = 0x7000001e;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0x8fffffff;
-enum SHF_WRITE = (1 << 0);
-enum SHF_ALLOC = (1 << 1);
-enum SHF_EXECINSTR = (1 << 2);
-enum SHF_MERGE = (1 << 4);
-enum SHF_STRINGS = (1 << 5);
-enum SHF_INFO_LINK = (1 << 6);
-enum SHF_LINK_ORDER = (1 << 7);
-enum SHF_OS_NONCONFORMING = (1 << 8);
-enum SHF_GROUP = (1 << 9);
-enum SHF_TLS = (1 << 10);
-enum SHF_MASKOS = 0x0ff00000;
-enum SHF_MASKPROC = 0xf0000000;
-
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_LOOS = 0x60000000;
-enum PT_SUNW_UNWIND = 0x6464e550;
-enum PT_GNU_EH_FRAME = 0x6474e550;
-enum PT_GNU_STACK = 0x6474e551;
-enum PT_GNU_RELRO = 0x6474e552;
-enum PT_LOSUNW = 0x6ffffffa;
-enum PT_SUNWBSS = 0x6ffffffa;
-enum PT_SUNWSTACK = 0x6ffffffb;
enum PT_SUNWDTRACE = 0x6ffffffc;
enum PT_SUNWCAP = 0x6ffffffd;
-enum PT_HISUNW = 0x6fffffff;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-
-enum PF_X = (1 << 0);
-enum PF_W = (1 << 1);
-enum PF_R = (1 << 2);
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
-
-enum PN_XNUM = 0xffff;
-
-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;
-enum DT_RELAENT = 9;
-enum DT_STRSZ = 10;
-enum DT_SYMENT = 11;
-enum DT_INIT = 12;
-enum DT_FINI = 13;
-enum DT_SONAME = 14;
-enum DT_RPATH = 15;
-enum DT_SYMBOLIC = 16;
-enum DT_REL = 17;
-enum DT_RELSZ = 18;
-enum DT_RELENT = 19;
-enum DT_PLTREL = 20;
-enum DT_DEBUG = 21;
-enum DT_TEXTREL = 22;
-enum DT_JMPREL = 23;
-enum DT_BIND_NOW = 24;
-enum DT_INIT_ARRAY = 25;
-enum DT_FINI_ARRAY = 26;
-enum DT_INIT_ARRAYSZ = 27;
-enum DT_FINI_ARRAYSZ = 28;
-enum DT_RUNPATH = 29;
-enum DT_FLAGS = 30;
-enum DT_ENCODING = 32;
-enum DT_PREINIT_ARRAY = 32;
-enum DT_PREINIT_ARRAYSZ = 33;
enum DT_MAXPOSTAGS = 34;
-enum DT_LOOS = 0x6000000d;
enum DT_SUNW_AUXILIARY = 0x6000000d;
enum DT_SUNW_RTLDINF = 0x6000000e;
enum DT_SUNW_FILTER = 0x6000000f;
enum DT_SUNW_CAP = 0x60000010;
-enum DT_HIOS = 0x6ffff000;
-enum DT_VALRNGLO = 0x6ffffd00;
-enum DT_CHECKSUM = 0x6ffffdf8;
-enum DT_PLTPADSZ = 0x6ffffdf9;
-enum DT_MOVEENT = 0x6ffffdfa;
-enum DT_MOVESZ = 0x6ffffdfb;
-enum DT_FEATURE_1 = 0x6ffffdfc;
-enum DT_POSFLAG_1 = 0x6ffffdfd;
-enum DT_SYMINSZ = 0x6ffffdfe;
-enum DT_SYMINENT = 0x6ffffdff;
-enum DT_VALRNGHI = 0x6ffffdff;
-enum DT_ADDRRNGLO = 0x6ffffe00;
-enum DT_GNU_HASH = 0x6ffffef5;
-enum DT_CONFIG = 0x6ffffefa;
-enum DT_DEPAUDIT = 0x6ffffefb;
-enum DT_AUDIT = 0x6ffffefc;
-enum DT_PLTPAD = 0x6ffffefd;
-enum DT_MOVETAB = 0x6ffffefe;
-enum DT_SYMINFO = 0x6ffffeff;
-enum DT_ADDRRNGHI = 0x6ffffeff;
-enum DT_VERSYM = 0x6ffffff0;
-enum DT_RELACOUNT = 0x6ffffff9;
-enum DT_RELCOUNT = 0x6ffffffa;
-enum DT_FLAGS_1 = 0x6ffffffb;
-enum DT_VERDEF = 0x6ffffffc;
-enum DT_VERDEFNUM = 0x6ffffffd;
-enum DT_VERNEED = 0x6ffffffe;
-enum DT_VERNEEDNUM = 0x6fffffff;
-enum DT_LOPROC = 0x70000000;
enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001;
-enum DT_AUXILIARY = 0x7ffffffd;
enum DT_USED = 0x7ffffffe;
-enum DT_FILTER = 0x7fffffff;
-enum DT_HIPROC = 0x7fffffff;
-
-enum DF_ORIGIN = 0x00000001;
-enum DF_SYMBOLIC = 0x00000002;
-enum DF_TEXTREL = 0x00000004;
-enum DF_BIND_NOW = 0x00000008;
-enum DF_STATIC_TLS = 0x00000010;
enum DF_1_BIND_NOW = 0x00000001;
-enum DF_1_GLOBAL = 0x00000002;
-enum DF_1_NODELETE = 0x00000008;
-enum DF_1_LOADFLTR = 0x00000010;
-enum DF_1_NOOPEN = 0x00000040;
-enum DF_1_NODEFLIB = 0x00000800;
enum NT_PRSTATUS = 1;
enum NT_FPREGSET = 2;
@@ -407,55 +78,19 @@ enum NT_PROCSTAT_OSREL = 14;
enum NT_PROCSTAT_PSSTRINGS = 15;
enum NT_PROCSTAT_AUXV = 16;
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOOS = 10;
-enum STB_HIOS = 12;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_GNU_IFUNC = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
-
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
enum STV_EXPORTED = 4;
enum STV_SINGLETON = 5;
enum STV_ELIMINATE = 6;
-enum STN_UNDEF = 0;
-
-enum VER_DEF_CURRENT = 1;
alias VER_NDX VER_DEF_IDX;
-enum VER_FLG_BASE = 0x1;
-enum VER_FLG_WEAK = 0x2;
-
-enum VER_NEED_CURRENT = 1;
enum VER_NEED_WEAK = 32768;
enum VER_NEED_HIDDEN = VER_NDX_HIDDEN;
alias VER_NDX VER_NEED_IDX;
-enum VER_NDX_LOCAL = 0;
-enum VER_NDX_GLOBAL = 1;
enum VER_NDX_GIVEN = 2;
-
enum VER_NDX_HIDDEN = 32768;
+
extern (D)
{
auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
@@ -465,395 +100,10 @@ enum CA_SUNW_NULL = 0;
enum CA_SUNW_HW_1 = 1;
enum CA_SUNW_SF_1 = 2;
-enum SYMINFO_FLG_DIRECT = 0x0001;
-enum SYMINFO_FLG_PASSTHRU = 0x0002;
-enum SYMINFO_FLG_COPY = 0x0004;
-enum SYMINFO_FLG_LAZYLOAD = 0x0008;
enum SYMINFO_FLG_DIRECTBIND = 0x0010;
enum SYMINFO_FLG_NOEXTDIRECT = 0x0020;
enum SYMINFO_FLG_FILTER = 0x0002;
enum SYMINFO_FLG_AUXILIARY = 0x0040;
-enum SYMINFO_BT_SELF = 0xffff;
-enum SYMINFO_BT_PARENT = 0xfffe;
enum SYMINFO_BT_NONE = 0xfffd;
enum SYMINFO_BT_EXTERN = 0xfffc;
-enum SYMINFO_BT_LOWRESERVE = 0xff00;
-
-enum SYMINFO_NONE = 0;
-enum SYMINFO_CURRENT = 1;
-enum SYMINFO_NUM = 2;
-
-enum R_386_NONE = 0;
-enum R_386_32 = 1;
-enum R_386_PC32 = 2;
-enum R_386_GOT32 = 3;
-enum R_386_PLT32 = 4;
-enum R_386_COPY = 5;
-enum R_386_GLOB_DAT = 6;
-enum R_386_JMP_SLOT = 7;
-enum R_386_RELATIVE = 8;
-enum R_386_GOTOFF = 9;
-enum R_386_GOTPC = 10;
-enum R_386_TLS_TPOFF = 14;
-enum R_386_TLS_IE = 15;
-enum R_386_TLS_GOTIE = 16;
-enum R_386_TLS_LE = 17;
-enum R_386_TLS_GD = 18;
-enum R_386_TLS_LDM = 19;
-enum R_386_TLS_GD_32 = 24;
-enum R_386_TLS_GD_PUSH = 25;
-enum R_386_TLS_GD_CALL = 26;
-enum R_386_TLS_GD_POP = 27;
-enum R_386_TLS_LDM_32 = 28;
-enum R_386_TLS_LDM_PUSH = 29;
-enum R_386_TLS_LDM_CALL = 30;
-enum R_386_TLS_LDM_POP = 31;
-enum R_386_TLS_LDO_32 = 32;
-enum R_386_TLS_IE_32 = 33;
-enum R_386_TLS_LE_32 = 34;
-enum R_386_TLS_DTPMOD32 = 35;
-enum R_386_TLS_DTPOFF32 = 36;
-enum R_386_TLS_TPOFF32 = 37;
-enum R_386_IRELATIVE = 42;
-
-enum R_ARM_NONE = 0;
-enum R_ARM_PC24 = 1;
-enum R_ARM_ABS32 = 2;
-enum R_ARM_REL32 = 3;
-enum R_ARM_PC13 = 4;
-enum R_ARM_ABS16 = 5;
-enum R_ARM_ABS12 = 6;
-enum R_ARM_THM_ABS5 = 7;
-enum R_ARM_ABS8 = 8;
-enum R_ARM_SBREL32 = 9;
-enum R_ARM_THM_PC22 = 10;
-enum R_ARM_THM_PC8 = 11;
-enum R_ARM_AMP_VCALL9 = 12;
-enum R_ARM_SWI24 = 13;
-enum R_ARM_THM_SWI8 = 14;
-enum R_ARM_XPC25 = 15;
-enum R_ARM_THM_XPC22 = 16;
-enum R_ARM_TLS_DTPMOD32 = 17;
-enum R_ARM_TLS_DTPOFF32 = 18;
-enum R_ARM_TLS_TPOFF32 = 19;
-enum R_ARM_COPY = 20;
-enum R_ARM_GLOB_DAT = 21;
-enum R_ARM_JUMP_SLOT = 22;
-enum R_ARM_RELATIVE = 23;
-enum R_ARM_GOTOFF = 24;
-enum R_ARM_GOTPC = 25;
-enum R_ARM_GOT32 = 26;
-enum R_ARM_PLT32 = 27;
-enum R_ARM_GNU_VTENTRY = 100;
-enum R_ARM_GNU_VTINHERIT = 101;
-enum R_ARM_RSBREL32 = 250;
-enum R_ARM_THM_RPC22 = 251;
-enum R_ARM_RREL32 = 252;
-enum R_ARM_RABS32 = 253;
-enum R_ARM_RPC24 = 254;
-enum R_ARM_RBASE = 255;
-
-enum R_IA_64_NONE = 0;
-enum R_IA_64_IMM14 = 0x21;
-enum R_IA_64_IMM22 = 0x22;
-enum R_IA_64_IMM64 = 0x23;
-enum R_IA_64_DIR32MSB = 0x24;
-enum R_IA_64_DIR32LSB = 0x25;
-enum R_IA_64_DIR64MSB = 0x26;
-enum R_IA_64_DIR64LSB = 0x27;
-enum R_IA_64_GPREL22 = 0x2a;
-enum R_IA_64_GPREL64I = 0x2b;
-enum R_IA_64_GPREL32MSB = 0x2c;
-enum R_IA_64_GPREL32LSB = 0x2d;
-enum R_IA_64_GPREL64MSB = 0x2e;
-enum R_IA_64_GPREL64LSB = 0x2f;
-enum R_IA_64_LTOFF22 = 0x32;
-enum R_IA_64_LTOFF64I = 0x33;
-enum R_IA_64_PLTOFF22 = 0x3a;
-enum R_IA_64_PLTOFF64I = 0x3b;
-enum R_IA_64_PLTOFF64MSB = 0x3e;
-enum R_IA_64_PLTOFF64LSB = 0x3f;
-enum R_IA_64_FPTR64I = 0x43;
-enum R_IA_64_FPTR32MSB = 0x44;
-enum R_IA_64_FPTR32LSB = 0x45;
-enum R_IA_64_FPTR64MSB = 0x46;
-enum R_IA_64_FPTR64LSB = 0x47;
-enum R_IA_64_PCREL60B = 0x48;
-enum R_IA_64_PCREL21B = 0x49;
-enum R_IA_64_PCREL21M = 0x4a;
-enum R_IA_64_PCREL21F = 0x4b;
-enum R_IA_64_PCREL32MSB = 0x4c;
-enum R_IA_64_PCREL32LSB = 0x4d;
-enum R_IA_64_PCREL64MSB = 0x4e;
-enum R_IA_64_PCREL64LSB = 0x4f;
-enum R_IA_64_LTOFF_FPTR22 = 0x52;
-enum R_IA_64_LTOFF_FPTR64I = 0x53;
-enum R_IA_64_LTOFF_FPTR32MSB = 0x54;
-enum R_IA_64_LTOFF_FPTR32LSB = 0x55;
-enum R_IA_64_LTOFF_FPTR64MSB = 0x56;
-enum R_IA_64_LTOFF_FPTR64LSB = 0x57;
-enum R_IA_64_SEGREL32MSB = 0x5c;
-enum R_IA_64_SEGREL32LSB = 0x5d;
-enum R_IA_64_SEGREL64MSB = 0x5e;
-enum R_IA_64_SEGREL64LSB = 0x5f;
-enum R_IA_64_SECREL32MSB = 0x64;
-enum R_IA_64_SECREL32LSB = 0x65;
-enum R_IA_64_SECREL64MSB = 0x66;
-enum R_IA_64_SECREL64LSB = 0x67;
-enum R_IA_64_REL32MSB = 0x6c;
-enum R_IA_64_REL32LSB = 0x6d;
-enum R_IA_64_REL64MSB = 0x6e;
-enum R_IA_64_REL64LSB = 0x6f;
-enum R_IA_64_LTV32MSB = 0x74;
-enum R_IA_64_LTV32LSB = 0x75;
-enum R_IA_64_LTV64MSB = 0x76;
-enum R_IA_64_LTV64LSB = 0x77;
-enum R_IA_64_PCREL21BI = 0x79;
-enum R_IA_64_PCREL22 = 0x7a;
-enum R_IA_64_PCREL64I = 0x7b;
-enum R_IA_64_IPLTMSB = 0x80;
-enum R_IA_64_IPLTLSB = 0x81;
-enum R_IA_64_SUB = 0x85;
-enum R_IA_64_LTOFF22X = 0x86;
-enum R_IA_64_LDXMOV = 0x87;
-enum R_IA_64_TPREL14 = 0x91;
-enum R_IA_64_TPREL22 = 0x92;
-enum R_IA_64_TPREL64I = 0x93;
-enum R_IA_64_TPREL64MSB = 0x96;
-enum R_IA_64_TPREL64LSB = 0x97;
-enum R_IA_64_LTOFF_TPREL22 = 0x9a;
-enum R_IA_64_DTPMOD64MSB = 0xa6;
-enum R_IA_64_DTPMOD64LSB = 0xa7;
-enum R_IA_64_LTOFF_DTPMOD22 = 0xaa;
-enum R_IA_64_DTPREL14 = 0xb1;
-enum R_IA_64_DTPREL22 = 0xb2;
-enum R_IA_64_DTPREL64I = 0xb3;
-enum R_IA_64_DTPREL32MSB = 0xb4;
-enum R_IA_64_DTPREL32LSB = 0xb5;
-enum R_IA_64_DTPREL64MSB = 0xb6;
-enum R_IA_64_DTPREL64LSB = 0xb7;
-enum R_IA_64_LTOFF_DTPREL22 = 0xba;
-
-enum R_MIPS_NONE = 0;
-enum R_MIPS_16 = 1;
-enum R_MIPS_32 = 2;
-enum R_MIPS_REL32 = 3;
-enum R_MIPS_26 = 4;
-enum R_MIPS_HI16 = 5;
-enum R_MIPS_LO16 = 6;
-enum R_MIPS_GPREL16 = 7;
-enum R_MIPS_LITERAL = 8;
-enum R_MIPS_GOT16 = 9;
-enum R_MIPS_PC16 = 10;
-enum R_MIPS_CALL16 = 11;
-enum R_MIPS_GPREL32 = 12;
-enum R_MIPS_GOTHI16 = 21;
-enum R_MIPS_GOTLO16 = 22;
-enum R_MIPS_CALLHI16 = 30;
-enum R_MIPS_CALLLO16 = 31;
-
-enum R_PPC_NONE = 0;
-enum R_PPC_ADDR32 = 1;
-enum R_PPC_ADDR24 = 2;
-enum R_PPC_ADDR16 = 3;
-enum R_PPC_ADDR16_LO = 4;
-enum R_PPC_ADDR16_HI = 5;
-enum R_PPC_ADDR16_HA = 6;
-enum R_PPC_ADDR14 = 7;
-enum R_PPC_ADDR14_BRTAKEN = 8;
-enum R_PPC_ADDR14_BRNTAKEN = 9;
-enum R_PPC_REL24 = 10;
-enum R_PPC_REL14 = 11;
-enum R_PPC_REL14_BRTAKEN = 12;
-enum R_PPC_REL14_BRNTAKEN = 13;
-enum R_PPC_GOT16 = 14;
-enum R_PPC_GOT16_LO = 15;
-enum R_PPC_GOT16_HI = 16;
-enum R_PPC_GOT16_HA = 17;
-enum R_PPC_PLTREL24 = 18;
-enum R_PPC_COPY = 19;
-enum R_PPC_GLOB_DAT = 20;
-enum R_PPC_JMP_SLOT = 21;
-enum R_PPC_RELATIVE = 22;
-enum R_PPC_LOCAL24PC = 23;
-enum R_PPC_UADDR32 = 24;
-enum R_PPC_UADDR16 = 25;
-enum R_PPC_REL32 = 26;
-enum R_PPC_PLT32 = 27;
-enum R_PPC_PLTREL32 = 28;
-enum R_PPC_PLT16_LO = 29;
-enum R_PPC_PLT16_HI = 30;
-enum R_PPC_PLT16_HA = 31;
-enum R_PPC_SDAREL16 = 32;
-enum R_PPC_SECTOFF = 33;
-enum R_PPC_SECTOFF_LO = 34;
-enum R_PPC_SECTOFF_HI = 35;
-enum R_PPC_SECTOFF_HA = 36;
-
-enum R_PPC64_ADDR64 = 38;
-enum R_PPC64_ADDR16_HIGHER = 39;
-enum R_PPC64_ADDR16_HIGHERA = 40;
-enum R_PPC64_ADDR16_HIGHEST = 41;
-enum R_PPC64_ADDR16_HIGHESTA = 42;
-enum R_PPC64_UADDR64 = 43;
-enum R_PPC64_REL64 = 44;
-enum R_PPC64_PLT64 = 45;
-enum R_PPC64_PLTREL64 = 46;
-enum R_PPC64_TOC16 = 47;
-enum R_PPC64_TOC16_LO = 48;
-enum R_PPC64_TOC16_HI = 49;
-enum R_PPC64_TOC16_HA = 50;
-enum R_PPC64_TOC = 51;
-enum R_PPC64_DTPMOD64 = 68;
-enum R_PPC64_TPREL64 = 73;
-enum R_PPC64_DTPREL64 = 78;
-
-enum R_PPC_TLS = 67;
-enum R_PPC_DTPMOD32 = 68;
-enum R_PPC_TPREL16 = 69;
-enum R_PPC_TPREL16_LO = 70;
-enum R_PPC_TPREL16_HI = 71;
-enum R_PPC_TPREL16_HA = 72;
-enum R_PPC_TPREL32 = 73;
-enum R_PPC_DTPREL16 = 74;
-enum R_PPC_DTPREL16_LO = 75;
-enum R_PPC_DTPREL16_HI = 76;
-enum R_PPC_DTPREL16_HA = 77;
-enum R_PPC_DTPREL32 = 78;
-enum R_PPC_GOT_TLSGD16 = 79;
-enum R_PPC_GOT_TLSGD16_LO = 80;
-enum R_PPC_GOT_TLSGD16_HI = 81;
-enum R_PPC_GOT_TLSGD16_HA = 82;
-enum R_PPC_GOT_TLSLD16 = 83;
-enum R_PPC_GOT_TLSLD16_LO = 84;
-enum R_PPC_GOT_TLSLD16_HI = 85;
-enum R_PPC_GOT_TLSLD16_HA = 86;
-enum R_PPC_GOT_TPREL16 = 87;
-enum R_PPC_GOT_TPREL16_LO = 88;
-enum R_PPC_GOT_TPREL16_HI = 89;
-enum R_PPC_GOT_TPREL16_HA = 90;
-
-enum R_PPC_EMB_NADDR32 = 101;
-enum R_PPC_EMB_NADDR16 = 102;
-enum R_PPC_EMB_NADDR16_LO = 103;
-enum R_PPC_EMB_NADDR16_HI = 104;
-enum R_PPC_EMB_NADDR16_HA = 105;
-enum R_PPC_EMB_SDAI16 = 106;
-enum R_PPC_EMB_SDA2I16 = 107;
-enum R_PPC_EMB_SDA2REL = 108;
-enum R_PPC_EMB_SDA21 = 109;
-enum R_PPC_EMB_MRKREF = 110;
-enum R_PPC_EMB_RELSEC16 = 111;
-enum R_PPC_EMB_RELST_LO = 112;
-enum R_PPC_EMB_RELST_HI = 113;
-enum R_PPC_EMB_RELST_HA = 114;
-enum R_PPC_EMB_BIT_FLD = 115;
-enum R_PPC_EMB_RELSDA = 116;
-
-enum R_SPARC_NONE = 0;
-enum R_SPARC_8 = 1;
-enum R_SPARC_16 = 2;
-enum R_SPARC_32 = 3;
-enum R_SPARC_DISP8 = 4;
-enum R_SPARC_DISP16 = 5;
-enum R_SPARC_DISP32 = 6;
-enum R_SPARC_WDISP30 = 7;
-enum R_SPARC_WDISP22 = 8;
-enum R_SPARC_HI22 = 9;
-enum R_SPARC_22 = 10;
-enum R_SPARC_13 = 11;
-enum R_SPARC_LO10 = 12;
-enum R_SPARC_GOT10 = 13;
-enum R_SPARC_GOT13 = 14;
-enum R_SPARC_GOT22 = 15;
-enum R_SPARC_PC10 = 16;
-enum R_SPARC_PC22 = 17;
-enum R_SPARC_WPLT30 = 18;
-enum R_SPARC_COPY = 19;
-enum R_SPARC_GLOB_DAT = 20;
-enum R_SPARC_JMP_SLOT = 21;
-enum R_SPARC_RELATIVE = 22;
-enum R_SPARC_UA32 = 23;
-enum R_SPARC_PLT32 = 24;
-enum R_SPARC_HIPLT22 = 25;
-enum R_SPARC_LOPLT10 = 26;
-enum R_SPARC_PCPLT32 = 27;
-enum R_SPARC_PCPLT22 = 28;
-enum R_SPARC_PCPLT10 = 29;
-enum R_SPARC_10 = 30;
-enum R_SPARC_11 = 31;
-enum R_SPARC_64 = 32;
-enum R_SPARC_OLO10 = 33;
-enum R_SPARC_HH22 = 34;
-enum R_SPARC_HM10 = 35;
-enum R_SPARC_LM22 = 36;
-enum R_SPARC_PC_HH22 = 37;
-enum R_SPARC_PC_HM10 = 38;
-enum R_SPARC_PC_LM22 = 39;
-enum R_SPARC_WDISP16 = 40;
-enum R_SPARC_WDISP19 = 41;
-enum R_SPARC_GLOB_JMP = 42;
-enum R_SPARC_7 = 43;
-enum R_SPARC_5 = 44;
-enum R_SPARC_6 = 45;
-enum R_SPARC_DISP64 = 46;
-enum R_SPARC_PLT64 = 47;
-enum R_SPARC_HIX22 = 48;
-enum R_SPARC_LOX10 = 49;
-enum R_SPARC_H44 = 50;
-enum R_SPARC_M44 = 51;
-enum R_SPARC_L44 = 52;
-enum R_SPARC_REGISTER = 53;
-enum R_SPARC_UA64 = 54;
-enum R_SPARC_UA16 = 55;
-enum R_SPARC_TLS_GD_HI22 = 56;
-enum R_SPARC_TLS_GD_LO10 = 57;
-enum R_SPARC_TLS_GD_ADD = 58;
-enum R_SPARC_TLS_GD_CALL = 59;
-enum R_SPARC_TLS_LDM_HI22 = 60;
-enum R_SPARC_TLS_LDM_LO10 = 61;
-enum R_SPARC_TLS_LDM_ADD = 62;
-enum R_SPARC_TLS_LDM_CALL = 63;
-enum R_SPARC_TLS_LDO_HIX22 = 64;
-enum R_SPARC_TLS_LDO_LOX10 = 65;
-enum R_SPARC_TLS_LDO_ADD = 66;
-enum R_SPARC_TLS_IE_HI22 = 67;
-enum R_SPARC_TLS_IE_LO10 = 68;
-enum R_SPARC_TLS_IE_LD = 69;
-enum R_SPARC_TLS_IE_LDX = 70;
-enum R_SPARC_TLS_IE_ADD = 71;
-enum R_SPARC_TLS_LE_HIX22 = 72;
-enum R_SPARC_TLS_LE_LOX10 = 73;
-enum R_SPARC_TLS_DTPMOD32 = 74;
-enum R_SPARC_TLS_DTPMOD64 = 75;
-enum R_SPARC_TLS_DTPOFF32 = 76;
-enum R_SPARC_TLS_DTPOFF64 = 77;
-enum R_SPARC_TLS_TPOFF32 = 78;
-enum R_SPARC_TLS_TPOFF64 = 79;
-
-enum R_X86_64_NONE = 0;
-enum R_X86_64_64 = 1;
-enum R_X86_64_PC32 = 2;
-enum R_X86_64_GOT32 = 3;
-enum R_X86_64_PLT32 = 4;
-enum R_X86_64_COPY = 5;
-enum R_X86_64_GLOB_DAT = 6;
-enum R_X86_64_JMP_SLOT = 7;
-enum R_X86_64_RELATIVE = 8;
-enum R_X86_64_GOTPCREL = 9;
-enum R_X86_64_32 = 10;
-enum R_X86_64_32S = 11;
-enum R_X86_64_16 = 12;
-enum R_X86_64_PC16 = 13;
-enum R_X86_64_8 = 14;
-enum R_X86_64_PC8 = 15;
-enum R_X86_64_DTPMOD64 = 16;
-enum R_X86_64_DTPOFF64 = 17;
-enum R_X86_64_TPOFF64 = 18;
-enum R_X86_64_TLSGD = 19;
-enum R_X86_64_TLSLD = 20;
-enum R_X86_64_DTPOFF32 = 21;
-enum R_X86_64_GOTTPOFF = 22;
-enum R_X86_64_TPOFF32 = 23;
-enum R_X86_64_IRELATIVE = 37;
diff --git a/libphobos/libdruntime/core/sys/openbsd/sys/elf32.d b/libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
index dae977a..342282b 100644
--- a/libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
+++ b/libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
@@ -7,114 +7,20 @@
module core.sys.openbsd.sys.elf32;
version (OpenBSD):
-
extern (C):
+pure:
+nothrow:
import core.stdc.stdint;
public import core.sys.openbsd.sys.elf_common;
-alias uint16_t Elf32_Half;
-alias uint32_t Elf32_Word;
-alias int32_t Elf32_Sword;
alias uint64_t Elf32_Lword;
-alias uint32_t Elf32_Addr;
-alias uint32_t Elf32_Off;
alias Elf32_Word Elf32_Hashelt;
alias Elf32_Word Elf32_Size;
alias Elf32_Sword Elf32_Ssize;
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf32_Phdr
-{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-}
-
-struct Elf32_Dyn
-{
- Elf32_Sword d_tag;
- union _d_un
- {
- Elf32_Word d_val;
- Elf32_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-extern (D) pure @safe
-{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-}
-
alias Elf_Note Elf32_Nhdr;
-struct Elf32_Move
-{
- Elf32_Lword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-extern (D) pure
-{
- auto ELF32_M_SYM(I)(I info) @safe { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf32_Cap
{
Elf32_Word c_tag;
@@ -125,63 +31,7 @@ struct Elf32_Cap
} _c_un c_un;
}
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Half st_shndx;
-}
-
-extern (D) pure
-{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) @safe { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) @safe { return (bind << 4) + (type & 0xf); }
- auto ELF32_ST_VISIBILITY(O)(O o) @safe { return o & 0x03; }
-}
-
-struct Elf32_Verdef
-{
- Elf32_Half vd_version;
- Elf32_Half vd_flags;
- Elf32_Half vd_ndx;
- Elf32_Half vd_cnt;
- Elf32_Word vd_hash;
- Elf32_Word vd_aux;
- Elf32_Word vd_next;
-}
-
-struct Elf32_Verdaux
-{
- Elf32_Word vda_name;
- Elf32_Word vda_next;
-}
-
-struct Elf32_Verneed
-{
- Elf32_Half vn_version;
- Elf32_Half vn_cnt;
- Elf32_Word vn_file;
- Elf32_Word vn_aux;
- Elf32_Word vn_next;
-}
-
-struct Elf32_Vernaux
-{
- Elf32_Word vna_hash;
- Elf32_Half vna_flags;
- Elf32_Half vna_other;
- Elf32_Word vna_name;
- Elf32_Word vna_next;
-}
-
-alias Elf32_Half Elf32_Versym;
-
-struct Elf32_Syminfo
+extern (D)
{
- Elf32_Half si_boundto;
- Elf32_Half si_flags;
+ auto ELF32_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
diff --git a/libphobos/libdruntime/core/sys/openbsd/sys/elf64.d b/libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
index e26a5fc..b76d669 100644
--- a/libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
+++ b/libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
@@ -7,97 +7,20 @@
module core.sys.openbsd.sys.elf64;
version (OpenBSD):
-
extern (C):
+pure:
+nothrow:
import core.stdc.stdint;
public import core.sys.openbsd.sys.elf_common;
-alias uint16_t Elf64_Half;
-alias uint32_t Elf64_Word;
-alias int32_t Elf64_Sword;
alias uint64_t Elf64_Lword;
-alias uint64_t Elf64_Xword;
-alias int64_t Elf64_Sxword;
-alias uint64_t Elf64_Addr;
-alias uint64_t Elf64_Off;
alias Elf64_Word Elf64_Hashelt;
alias Elf64_Xword Elf64_Size;
alias Elf64_Sxword Elf64_Ssize;
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-struct Elf64_Phdr
-{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
-}
-
-struct Elf64_Dyn
-{
- Elf64_Sxword d_tag;
- union _d_un
- {
- Elf64_Xword d_val;
- Elf64_Addr d_ptr;
- } _d_un d_un;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
extern (D) pure
{
- auto ELF64_R_SYM(I)(I i) @safe { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) @safe { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) @safe { return (sym << 32) + (type & 0xffffffff); }
-
auto ELF64_R_TYPE_DATA(I)(I i) { return (cast(Elf64_Xword) i << 32) >> 40; }
auto ELF64_R_TYPE_ID(I)(I i) { return (cast(Elf64_Xword) i << 56 ) >> 56; }
auto ELF64_R_TYPE_INFO(D, T)(D d, T t) { return cast(Elf64_Xword) d << 8 + cast(Elf64_Xword) t; }
@@ -105,22 +28,6 @@ extern (D) pure
alias Elf_Note Elf64_Nhdr;
-struct Elf64_Move
-{
- Elf64_Lword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-
-extern (D) pure
-{
- auto ELF64_M_SYM(I)(I info) @safe { return info >> 8; }
- auto ELF64_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF64_M_INFO(S, SZ)(S sym, SZ size) @safe { return (sym << 8) + cast(ubyte)size; }
-}
-
struct Elf64_Cap
{
Elf64_Xword c_tag;
@@ -131,63 +38,7 @@ struct Elf64_Cap
} _c_un c_un;
}
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
-extern (D) pure
-{
- auto ELF64_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF64_ST_TYPE(T)(T val) @safe { return val & 0xf; }
- auto ELF64_ST_INFO(B, T)(B bind, T type) @safe { return (bind << 4) + (type & 0xf); }
- auto ELF64_ST_VISIBILITY(O)(O o) @safe { return o & 0x03; }
-}
-
-struct Elf64_Verdef
-{
- Elf64_Half vd_version;
- Elf64_Half vd_flags;
- Elf64_Half vd_ndx;
- Elf64_Half vd_cnt;
- Elf64_Word vd_hash;
- Elf64_Word vd_aux;
- Elf64_Word vd_next;
-}
-
-struct Elf64_Verdaux
-{
- Elf64_Word vda_name;
- Elf64_Word vda_next;
-}
-
-struct Elf64_Verneed
-{
- Elf64_Half vn_version;
- Elf64_Half vn_cnt;
- Elf64_Word vn_file;
- Elf64_Word vn_aux;
- Elf64_Word vn_next;
-}
-
-struct Elf64_Vernaux
-{
- Elf64_Word vna_hash;
- Elf64_Half vna_flags;
- Elf64_Half vna_other;
- Elf64_Word vna_name;
- Elf64_Word vna_next;
-}
-
-alias Elf64_Half Elf64_Versym;
-
-struct Elf64_Syminfo
+extern (D)
{
- Elf64_Half si_boundto;
- Elf64_Half si_flags;
+ auto ELF64_ST_VISIBILITY(O)(O o) { return o & 0x03; }
}
diff --git a/libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d b/libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
index bcd2701..4812e1f 100644
--- a/libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
+++ b/libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
@@ -7,10 +7,12 @@
module core.sys.openbsd.sys.elf_common;
version (OpenBSD):
-
extern (C):
+pure:
+nothrow:
import core.stdc.stdint;
+public import core.sys.elf;
struct Elf_Note
{
@@ -27,60 +29,7 @@ struct Elf_GNU_Hash_Header
uint32_t gh_shift2;
}
-enum EI_MAG0 = 0;
-enum EI_MAG1 = 1;
-enum EI_MAG2 = 2;
-enum EI_MAG3 = 3;
-enum EI_CLASS = 4;
-enum EI_DATA = 5;
-enum EI_VERSION = 6;
-enum EI_OSABI = 7;
-enum EI_ABIVERSION = 8;
enum OLD_EI_BRAND = 8;
-enum EI_PAD = 9;
-enum EI_NIDENT = 16;
-
-enum ELFMAG0 = 0x7f;
-enum ELFMAG1 = 'E';
-enum ELFMAG2 = 'L';
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = 0;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_LINUX = 3;
-enum ELFOSABI_HURD = 4;
-enum ELFOSABI_86OPEN = 5;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_MONTEREY = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_OPENVMS = 13;
-enum ELFOSABI_NSK = 14;
-enum ELFOSABI_AROS = 15;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
-
-// just a pointer
-enum ELFOSABI_DRAGONFLYBSD = ELFOSABI_NONE;
extern (D) pure @safe
{
@@ -90,587 +39,44 @@ extern (D) pure @safe
ehdr.e_ident[EI_MAG3] == ELFMAG3; }
}
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_LOOS = 0xfe00;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-enum EM_PARISC = 15;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_X86_64 = 62;
-enum EM_AMD64 = 62;
-enum EM_PDSP = 63;
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_VIDEOCORE = 95;
-enum EM_TMM_GPP = 96;
-enum EM_NS32K = 97;
-enum EM_TPC = 98;
-enum EM_SNP1K = 99;
-enum EM_ST200 = 100;
-enum EM_IP2K = 101;
-enum EM_MAX = 102;
-enum EM_CR = 103;
-enum EM_F2MC16 = 104;
-enum EM_MSP430 = 105;
-enum EM_BLACKFIN = 106;
-enum EM_SE_C33 = 107;
-enum EM_SEP = 108;
-enum EM_ARCA = 109;
-enum EM_UNICORE = 110;
-enum EM_DXP = 112;
-enum EM_ALTERA_NIOS2 =113;
-enum EM_CRX = 114;
-enum EM_XGATE = 115;
-enum EM_C166 = 116;
-enum EM_M16C = 117;
-enum EM_DSPIC30F = 118;
-enum EM_CE = 119;
-enum EM_M32C = 120;
-enum EM_res121 = 121;
-enum EM_res122 = 122;
-enum EM_res123 = 123;
-enum EM_res124 = 124;
-enum EM_res125 = 125;
-enum EM_res126 = 126;
-enum EM_res127 = 127;
-enum EM_res128 = 128;
-enum EM_res129 = 129;
-enum EM_res130 = 130;
-enum EM_TSK3000 = 131;
-enum EM_RS08 = 132;
-enum EM_res133 = 133;
-enum EM_ECOG2 = 134;
-enum EM_SCORE = 135;
-enum EM_SCORE7 = 135;
-enum EM_DSP24 = 136;
-enum EM_VIDEOCORE3 = 137;
-enum EM_LATTICEMICO32 = 138;
-enum EM_SE_C17 = 139;
-enum EM_TI_C6000 = 140;
-enum EM_TI_C2000 = 141;
-enum EM_TI_C5500 = 142;
-enum EM_res143 = 143;
-enum EM_res144 = 144;
-enum EM_res145 = 145;
-enum EM_res146 = 146;
-enum EM_res147 = 147;
-enum EM_res148 = 148;
-enum EM_res149 = 149;
-enum EM_res150 = 150;
-enum EM_res151 = 151;
-enum EM_res152 = 152;
-enum EM_res153 = 153;
-enum EM_res154 = 154;
-enum EM_res155 = 155;
-enum EM_res156 = 156;
-enum EM_res157 = 157;
-enum EM_res158 = 158;
-enum EM_res159 = 159;
-enum EM_MMDSP_PLUS = 160;
-enum EM_CYPRESS_M8C = 161;
-enum EM_R32C = 162;
-enum EM_TRIMEDIA = 163;
-enum EM_QDSP6 = 164;
-enum EM_8051 = 165;
-enum EM_STXP7X = 166;
-enum EM_NDS32 = 167;
-enum EM_ECOG1 = 168;
-enum EM_ECOG1X = 168;
-enum EM_MAXQ30 = 169;
-enum EM_XIMO16 = 170;
-enum EM_MANIK = 171;
-enum EM_CRAYNV2 = 172;
-enum EM_RX = 173;
-enum EM_METAG = 174;
-enum EM_MCST_ELBRUS = 175;
-enum EM_ECOG16 = 176;
-enum EM_CR16 = 177;
-enum EM_ETPU = 178;
-enum EM_SLE9X = 179;
-enum EM_L1OM = 180;
-enum EM_K1OM = 181;
-enum EM_INTEL182 = 182;
-enum EM_res183 = 183;
-enum EM_res184 = 184;
-enum EM_AVR32 = 185;
-enum EM_STM8 = 186;
-enum EM_TILE64 = 187;
-enum EM_TILEPRO = 188;
-enum EM_MICROBLAZE = 189;
-enum EM_CUDA = 190;
-enum EM_TILEGX = 191;
-
enum EM_486 = 6;
enum EM_MIPS_RS4_BE = 10;
enum EM_ALPHA_STD = 41;
-enum EM_ALPHA = 0x9026;
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_LOOS = 0x60000000;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-
-enum PT_GNU_EH_FRAME = PT_LOOS + 0x474e550; /* Frame unwind information */
-enum PT_SUNW_EH_FRAME = PT_GNU_EH_FRAME; /* Solaris uses the same value */
-enum PT_GNU_STACK = PT_LOOS + 0x474e551; /* Stack flags */
-enum PT_GNU_RELRO = PT_LOOS + 0x474e552; /* Read-only after relocation */
-
-enum PF_X = 0x1;
-enum PF_W = 0x2;
-enum PF_R = 0x4;
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
-
-enum PN_XNUM = 0xffff;
-
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-
-enum SHT_LOOS = 0x60000000;
-enum SHT_LOSUNW = 0x6ffffff4;
+enum PT_SUNW_EH_FRAME = PT_GNU_EH_FRAME;
enum SHT_GNU_INCREMENTAL_INPUTS = 0x6fff4700;
-enum SHT_GNU_ATTRIBUTES = 0x6ffffff5;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_GNU_LIBLIST = 0x6ffffff7;
-//enum SHT_SUNW_dof = 0x6ffffff4;
-//enum SHT_SUNW_cap = 0x6ffffff5;
-//enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
enum SHT_SUNW_verdef = 0x6ffffffd;
enum SHT_SUNW_verneed = 0x6ffffffe;
enum SHT_SUNW_versym = 0x6fffffff;
-enum SHT_GNU_verdef = SHT_SUNW_verdef;
-enum SHT_GNU_verneed = SHT_SUNW_verneed;
-enum SHT_GNU_versym = SHT_SUNW_versym;
-
-enum SHT_LOPROC = 0x70000000;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0x8fffffff;
-
-/*
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
-enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
-enum SHT_SUNW_DEBUG = 0x6ffffff9;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_AMD64_UNWIND = 0x70000001;
-enum SHT_ARM_EXIDX = 0x70000001;
-enum SHT_ARM_PREEMPTMAP = 0x70000002;
-enum SHT_ARM_ATTRIBUTES = 0x70000003;
-enum SHT_ARM_DEBUGOVERLAY = 0x70000004;
-enum SHT_ARM_OVERLAYSECTION = 0x70000005;
-enum SHT_MIPS_REGINFO = 0x70000006;
-enum SHT_MIPS_OPTIONS = 0x7000000d;
-enum SHT_MIPS_DWARF = 0x7000001e;
-*/
-
-enum SHF_WRITE = (1 << 0);
-enum SHF_ALLOC = (1 << 1);
-enum SHF_EXECINSTR = (1 << 2);
-enum SHF_MERGE = (1 << 4);
-enum SHF_STRINGS = (1 << 5);
-enum SHF_INFO_LINK = (1 << 6);
-enum SHF_LINK_ORDER = (1 << 7);
-enum SHF_OS_NONCONFORMING = (1 << 8);
-enum SHF_GROUP = (1 << 9);
-enum SHF_TLS = (1 << 10);
-enum SHF_COMPRESSED = (1 << 11);
-
-enum SHF_MASKOS = 0x0ff00000;
-enum SHF_MASKPROC = 0xf0000000;
-
enum NT_PRSTATUS = 1;
enum NT_FPREGSET = 2;
enum NT_PRPSINFO = 3;
enum NT_TASKSTRUCT = 4;
enum NT_AUXV = 6;
-/*
-enum NT_THRMISC = 7;
-enum NT_PROCSTAT_PROC = 8;
-enum NT_PROCSTAT_FILES = 9;
-enum NT_PROCSTAT_VMMAP = 10;
-enum NT_PROCSTAT_GROUPS = 11;
-enum NT_PROCSTAT_UMASK = 12;
-enum NT_PROCSTAT_RLIMIT = 13;
-enum NT_PROCSTAT_OSREL = 14;
-enum NT_PROCSTAT_PSSTRINGS = 15;
-enum NT_PROCSTAT_AUXV = 16;
-*/
-
-enum STN_UNDEF = 0;
-
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOOS = 10;
-enum STB_HIOS = 12;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_GNU_IFUNC = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
-
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
-/*
-enum STV_EXPORTED = 4;
-enum STV_SINGLETON = 5;
-enum STV_ELIMINATE = 6;
-*/
-
-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;
-enum DT_RELAENT = 9;
-enum DT_STRSZ = 10;
-enum DT_SYMENT = 11;
-enum DT_INIT = 12;
-enum DT_FINI = 13;
-enum DT_SONAME = 14;
-enum DT_RPATH = 15;
-enum DT_SYMBOLIC = 16;
-enum DT_REL = 17;
-enum DT_RELSZ = 18;
-enum DT_RELENT = 19;
-enum DT_PLTREL = 20;
-enum DT_DEBUG = 21;
-enum DT_TEXTREL = 22;
-enum DT_JMPREL = 23;
-enum DT_BIND_NOW = 24;
-enum DT_INIT_ARRAY = 25;
-enum DT_FINI_ARRAY = 26;
-enum DT_INIT_ARRAYSZ = 27;
-enum DT_FINI_ARRAYSZ = 28;
-enum DT_RUNPATH = 29;
-enum DT_FLAGS = 30;
-
-enum DT_ENCODING = 32;
-enum DT_PREINIT_ARRAY = 32;
-enum DT_PREINIT_ARRAYSZ = 33;
-//enum DT_MAXPOSTAGS = 34;
-enum DT_LOOS = 0x6000000d;
-enum DT_HIOS = 0x6ffff000;
-/*
-enum DT_SUNW_AUXILIARY = 0x6000000d;
-enum DT_SUNW_RTLDINF = 0x6000000e;
-enum DT_SUNW_FILTER = 0x6000000f;
-enum DT_SUNW_CAP = 0x60000010;
-*/
-
-enum DT_VALRNGLO = 0x6ffffd00;
-enum DT_GNU_PRELINKED = 0x6ffffdf5;
-enum DT_GNU_CONFLICTSZ =0x6ffffdf6;
-enum DT_GNU_LIBLISTSZ = 0x6ffffdf7;
-enum DT_CHECKSUM = 0x6ffffdf8;
-enum DT_PLTPADSZ = 0x6ffffdf9;
-enum DT_MOVEENT = 0x6ffffdfa;
-enum DT_MOVESZ = 0x6ffffdfb;
-enum DT_FEATURE_1 = 0x6ffffdfc;
-enum DT_POSFLAG_1 = 0x6ffffdfd;
-enum DT_SYMINSZ = 0x6ffffdfe;
-enum DT_SYMINENT = 0x6ffffdff;
-enum DT_VALRNGHI = 0x6ffffdff;
-enum DT_ADDRRNGLO = 0x6ffffe00;
-enum DT_GNU_HASH = 0x6ffffef5;
-enum DT_TLSDESC_PLT = 0x6ffffef6;
-enum DT_TLSDESC_GOT = 0x6ffffef7;
-enum DT_GNU_CONFLICT = 0x6ffffef8;
-enum DT_GNU_LIBLIST = 0x6ffffef9;
-enum DT_CONFIG = 0x6ffffefa;
-enum DT_DEPAUDIT = 0x6ffffefb;
-enum DT_AUDIT = 0x6ffffefc;
-enum DT_PLTPAD = 0x6ffffefd;
-enum DT_MOVETAB = 0x6ffffefe;
-enum DT_SYMINFO = 0x6ffffeff;
-enum DT_ADDRRNGHI = 0x6ffffeff;
-enum DT_RELACOUNT = 0x6ffffff9;
-enum DT_RELCOUNT = 0x6ffffffa;
-enum DT_FLAGS_1 = 0x6ffffffb;
-enum DT_VERDEF = 0x6ffffffc;
-enum DT_VERDEFNUM = 0x6ffffffd;
-enum DT_VERNEED = 0x6ffffffe;
-enum DT_VERNEEDNUM = 0x6fffffff;
-enum DT_VERSYM = 0x6ffffff0;
-enum DT_LOPROC = 0x70000000;
-//enum DT_DEPRECATED_SPARC_REGISTER = 0x7000001;
-enum DT_AUXILIARY = 0x7ffffffd;
enum DT_USED = 0x7ffffffe;
-enum DT_FILTER = 0x7fffffff;
-enum DT_HIPROC = 0x7fffffff;
-
-enum DTF_1_PARINIT = 0x00000001;
-enum DTF_1_CONFEXP = 0x00000002;
-
-enum DF_P1_LAZYLOAD = 0x00000001;
-enum DF_P1_GROUPPERM= 0x00000002;
-enum DF_1_NOW = 0x00000001;
enum DF_1_BIND_NOW = 0x00000001;
-enum DF_1_GLOBAL = 0x00000002;
-enum DF_1_GROUP = 0x00000004;
-enum DF_1_NODELETE = 0x00000008;
-enum DF_1_LOADFLTR = 0x00000010;
-enum DF_1_INITFIRST = 0x00000020;
-enum DF_1_NOOPEN = 0x00000040;
-enum DF_1_ORIGIN = 0x00000080;
-enum DF_1_DIRECT = 0x00000100;
-enum DF_1_TRANS = 0x00000200;
-enum DF_1_INTERPOSE = 0x00000400;
-enum DF_1_NODEFLIB = 0x00000800;
-enum DF_1_NODUMP = 0x00001000;
-enum DF_1_CONLFAT = 0x00002000;
-enum DF_ORIGIN = 0x00000001;
-enum DF_SYMBOLIC = 0x00000002;
-enum DF_TEXTREL = 0x00000004;
-enum DF_BIND_NOW = 0x00000008;
-enum DF_STATIC_TLS = 0x00000010;
-
-enum VER_DEF_NONE = 0;
-enum VER_DEF_CURRENT = 1;
alias VER_NDX VER_DEF_IDX;
-enum VER_FLG_BASE = 0x1;
-enum VER_FLG_WEAK = 0x2;
enum VER_FLG_INFO = 0x4;
-enum VER_NDX_LOCAL = 0;
-enum VER_NDX_GLOBAL = 1;
enum VER_NDX_GIVEN = 2;
enum VER_NDX_HIDDEN = 32768;
+
extern (D) pure @safe
{
auto VER_NDX(V)(V v) { return v & ~(1u << 15); }
}
-enum VER_NEED_NONE = 0;
-enum VER_NEED_CURRENT = 1;
enum VER_NEED_WEAK = 32768;
enum VER_NEED_HIDDEN = VER_NDX_HIDDEN;
alias VER_NDX VER_NEED_IDX;
-/*
-enum CA_SUNW_NULL = 0;
-enum CA_SUNW_HW_1 = 1;
-enum CA_SUNW_SF_1 = 2;
-*/
-
enum VERSYM_HIDDEN = 0x8000;
enum VERSYM_VERSION = 0x7fff;
enum ELF_VER_CHR = '@';
-
-enum SYMINFO_BT_SELF = 0xffff;
-enum SYMINFO_BT_PARENT = 0xfffe;
-//enum SYMINFO_BT_NONE = 0xfffd;
-//enum SYMINFO_BT_EXTERN = 0xfffc;
-enum SYMINFO_BT_LOWRESERVE = 0xff00;
-
-enum SYMINFO_FLG_DIRECT = 0x0001;
-enum SYMINFO_FLG_PASSTHRU = 0x0002;
-enum SYMINFO_FLG_COPY = 0x0004;
-enum SYMINFO_FLG_LAZYLOAD = 0x0008;
-//enum SYMINFO_FLG_DIRECTBIND = 0x0010;
-//enum SYMINFO_FLG_NOEXTDIRECT = 0x0020;
-//enum SYMINFO_FLG_FILTER = 0x0002;
-//enum SYMINFO_FLG_AUXILIARY = 0x0040;
-
-enum SYMINFO_NONE = 0;
-enum SYMINFO_CURRENT = 1;
-enum SYMINFO_NUM = 2;
-
-enum GRP_COMDAT = 0x1;
-
-enum R_386_NONE = 0;
-enum R_386_32 = 1;
-enum R_386_PC32 = 2;
-enum R_386_GOT32 = 3;
-enum R_386_PLT32 = 4;
-enum R_386_COPY = 5;
-enum R_386_GLOB_DAT = 6;
-enum R_386_JMP_SLOT = 7;
-enum R_386_RELATIVE = 8;
-enum R_386_GOTOFF = 9;
-enum R_386_GOTPC = 10;
-enum R_386_TLS_TPOFF = 14;
-enum R_386_TLS_IE = 15;
-enum R_386_TLS_GOTIE = 16;
-enum R_386_TLS_LE = 17;
-enum R_386_TLS_GD = 18;
-enum R_386_TLS_LDM = 19;
-enum R_386_TLS_GD_32 = 24;
-enum R_386_TLS_GD_PUSH = 25;
-enum R_386_TLS_GD_CALL = 26;
-enum R_386_TLS_GD_POP = 27;
-enum R_386_TLS_LDM_32 = 28;
-enum R_386_TLS_LDM_PUSH = 29;
-enum R_386_TLS_LDM_CALL = 30;
-enum R_386_TLS_LDM_POP = 31;
-enum R_386_TLS_LDO_32 = 32;
-enum R_386_TLS_IE_32 = 33;
-enum R_386_TLS_LE_32 = 34;
-enum R_386_TLS_DTPMOD32 = 35;
-enum R_386_TLS_DTPOFF32 = 36;
-enum R_386_TLS_TPOFF32 = 37;
-enum R_386_IRELATIVE = 42;
-
-enum R_X86_64_NONE = 0;
-enum R_X86_64_64 = 1;
-enum R_X86_64_PC32 = 2;
-enum R_X86_64_GOT32 = 3;
-enum R_X86_64_PLT32 = 4;
-enum R_X86_64_COPY = 5;
-enum R_X86_64_GLOB_DAT = 6;
-enum R_X86_64_JMP_SLOT = 7;
-enum R_X86_64_RELATIVE = 8;
-enum R_X86_64_GOTPCREL = 9;
-enum R_X86_64_32 = 10;
-enum R_X86_64_32S = 11;
-enum R_X86_64_16 = 12;
-enum R_X86_64_PC16 = 13;
-enum R_X86_64_8 = 14;
-enum R_X86_64_PC8 = 15;
-enum R_X86_64_DTPMOD64 = 16;
-enum R_X86_64_DTPOFF64 = 17;
-enum R_X86_64_TPOFF64 = 18;
-enum R_X86_64_TLSGD = 19;
-enum R_X86_64_TLSLD = 20;
-enum R_X86_64_DTPOFF32 = 21;
-enum R_X86_64_GOTTPOFF = 22;
-enum R_X86_64_TPOFF32 = 23;
-enum R_X86_64_IRELATIVE = 37;
diff --git a/libphobos/libdruntime/core/sys/posix/sys/socket.d b/libphobos/libdruntime/core/sys/posix/sys/socket.d
index c1309a6..3a7b753 100644
--- a/libphobos/libdruntime/core/sys/posix/sys/socket.d
+++ b/libphobos/libdruntime/core/sys/posix/sys/socket.d
@@ -589,9 +589,24 @@ else version (Darwin)
struct cmsghdr
{
- socklen_t cmsg_len;
- int cmsg_level;
- int cmsg_type;
+ socklen_t cmsg_len;
+ int cmsg_level;
+ int cmsg_type;
+ }
+
+
+ extern (D)
+ {
+ socklen_t CMSG_ALIGN(socklen_t len) pure nothrow @nogc { return (len + socklen_t.sizeof - 1) & cast(socklen_t) (~(socklen_t.sizeof - 1)); }
+ socklen_t CMSG_SPACE(socklen_t len) pure nothrow @nogc { return CMSG_ALIGN(len) + CMSG_ALIGN(cmsghdr.sizeof); }
+ socklen_t CMSG_LEN(socklen_t len) pure nothrow @nogc { return CMSG_ALIGN(cmsghdr.sizeof) + len; }
+
+ inout(ubyte)* CMSG_DATA( return scope inout(cmsghdr)* cmsg ) pure nothrow @nogc { return cast(ubyte*)( cmsg + 1 ); }
+
+ inout(cmsghdr)* CMSG_FIRSTHDR( inout(msghdr)* mhdr ) pure nothrow @nogc
+ {
+ return ( cast(socklen_t)mhdr.msg_controllen >= cmsghdr.sizeof ? cast(inout(cmsghdr)*) mhdr.msg_control : cast(inout(cmsghdr)*) null );
+ }
}
enum : uint
@@ -599,18 +614,6 @@ else version (Darwin)
SCM_RIGHTS = 0x01
}
- /+
- CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + \
- ALIGN(sizeof(struct cmsghdr)))
- CMSG_NXTHDR(mhdr, cmsg) \
- (((unsigned char *)(cmsg) + ALIGN((cmsg)->cmsg_len) + \
- ALIGN(sizeof(struct cmsghdr)) > \
- (unsigned char *)(mhdr)->msg_control +(mhdr)->msg_controllen) ? \
- (struct cmsghdr *)0 /* NULL */ : \
- (struct cmsghdr *)((unsigned char *)(cmsg) + ALIGN((cmsg)->cmsg_len)))
- CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control)
- +/
-
struct linger
{
int l_onoff;
diff --git a/libphobos/libdruntime/core/sys/solaris/sys/elf.d b/libphobos/libdruntime/core/sys/solaris/sys/elf.d
index 7a46d52..687e7f7 100644
--- a/libphobos/libdruntime/core/sys/solaris/sys/elf.d
+++ b/libphobos/libdruntime/core/sys/solaris/sys/elf.d
@@ -9,7 +9,7 @@ version (Solaris):
extern (C):
nothrow:
-public import core.sys.solaris.sys.elftypes;
+public import core.sys.elf;
enum ELF32_FSZ_ADDR = 4;
enum ELF32_FSZ_HALF = 2;
@@ -25,333 +25,24 @@ enum ELF64_FSZ_WORD = 4;
enum ELF64_FSZ_SXWORD = 8;
enum ELF64_FSZ_XWORD = 8;
-enum EI_NIDENT = 16;
-
-struct Elf32_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf32_Half e_type;
- Elf32_Half e_machine;
- Elf32_Word e_version;
- Elf32_Addr e_entry;
- Elf32_Off e_phoff;
- Elf32_Off e_shoff;
- Elf32_Word e_flags;
- Elf32_Half e_ehsize;
- Elf32_Half e_phentsize;
- Elf32_Half e_phnum;
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-}
-
-struct Elf64_Ehdr
-{
- char[EI_NIDENT] e_ident = 0;
- Elf64_Half e_type;
- Elf64_Half e_machine;
- Elf64_Word e_version;
- Elf64_Addr e_entry;
- Elf64_Off e_phoff;
- Elf64_Off e_shoff;
- Elf64_Word e_flags;
- Elf64_Half e_ehsize;
- Elf64_Half e_phentsize;
- Elf64_Half e_phnum;
- Elf64_Half e_shentsize;
- Elf64_Half e_shnum;
- Elf64_Half e_shstrndx;
-}
-
-enum EI_MAG0 = 0;
-enum EI_MAG1 = 1;
-enum EI_MAG2 = 2;
-enum EI_MAG3 = 3;
-enum EI_CLASS = 4;
-enum EI_DATA = 5;
-enum EI_VERSION = 6;
-enum EI_OSABI = 7;
-enum EI_ABIVERSION = 8;
-enum EI_PAD = 9;
-
-enum ELFMAG0 = 0x7f;
-enum ELFMAG1 = 'E';
-enum ELFMAG2 = 'L';
-enum ELFMAG3 = 'F';
-enum ELFMAG = "\177ELF";
-enum SELFMAG = 4;
-
-enum ELFCLASSNONE = 0;
-enum ELFCLASS32 = 1;
-enum ELFCLASS64 = 2;
-enum ELFCLASSNUM = 3;
-
-enum ELFDATANONE = 0;
-enum ELFDATA2LSB = 1;
-enum ELFDATA2MSB = 2;
-enum ELFDATANUM = 3;
-
-enum ET_NONE = 0;
-enum ET_REL = 1;
-enum ET_EXEC = 2;
-enum ET_DYN = 3;
-enum ET_CORE = 4;
-enum ET_NUM = 5;
-enum ET_LOOS = 0xfe00;
enum ET_LOSUNW = 0xfeff;
enum ET_SUNWPSEUDO = 0xfeff;
enum ET_HISUNW = 0xfeff;
-enum ET_HIOS = 0xfeff;
-enum ET_LOPROC = 0xff00;
-enum ET_HIPROC = 0xffff;
-
-enum EM_NONE = 0;
-enum EM_M32 = 1;
-enum EM_SPARC = 2;
-enum EM_386 = 3;
-enum EM_68K = 4;
-enum EM_88K = 5;
-enum EM_486 = 6;
-enum EM_860 = 7;
-enum EM_MIPS = 8;
-enum EM_S370 = 9;
-enum EM_MIPS_RS3_LE = 10;
-enum EM_RS6000 = 11;
-enum EM_UNKNOWN12 = 12;
-enum EM_UNKNOWN13 = 13;
-enum EM_UNKNOWN14 = 14;
-enum EM_PA_RISC = 15;
-enum EM_PARISC = EM_PA_RISC;
-enum EM_nCUBE = 16;
-enum EM_VPP500 = 17;
-enum EM_SPARC32PLUS = 18;
-enum EM_960 = 19;
-enum EM_PPC = 20;
-enum EM_PPC64 = 21;
-enum EM_S390 = 22;
-enum EM_UNKNOWN22 = EM_S390;
-enum EM_UNKNOWN23 = 23;
-enum EM_UNKNOWN24 = 24;
-enum EM_UNKNOWN25 = 25;
-enum EM_UNKNOWN26 = 26;
-enum EM_UNKNOWN27 = 27;
-enum EM_UNKNOWN28 = 28;
-enum EM_UNKNOWN29 = 29;
-enum EM_UNKNOWN30 = 30;
-enum EM_UNKNOWN31 = 31;
-enum EM_UNKNOWN32 = 32;
-enum EM_UNKNOWN33 = 33;
-enum EM_UNKNOWN34 = 34;
-enum EM_UNKNOWN35 = 35;
-enum EM_V800 = 36;
-enum EM_FR20 = 37;
-enum EM_RH32 = 38;
-enum EM_RCE = 39;
-enum EM_ARM = 40;
-enum EM_ALPHA = 41;
-enum EM_SH = 42;
-enum EM_SPARCV9 = 43;
-enum EM_TRICORE = 44;
-enum EM_ARC = 45;
-enum EM_H8_300 = 46;
-enum EM_H8_300H = 47;
-enum EM_H8S = 48;
-enum EM_H8_500 = 49;
-enum EM_IA_64 = 50;
-enum EM_MIPS_X = 51;
-enum EM_COLDFIRE = 52;
-enum EM_68HC12 = 53;
-enum EM_MMA = 54;
-enum EM_PCP = 55;
-enum EM_NCPU = 56;
-enum EM_NDR1 = 57;
-enum EM_STARCORE = 58;
-enum EM_ME16 = 59;
-enum EM_ST100 = 60;
-enum EM_TINYJ = 61;
-enum EM_AMD64 = 62;
-enum EM_X86_64 = EM_AMD64;
-enum EM_PDSP = 63;
-enum EM_UNKNOWN64 = 64;
-enum EM_UNKNOWN65 = 65;
-enum EM_FX66 = 66;
-enum EM_ST9PLUS = 67;
-enum EM_ST7 = 68;
-enum EM_68HC16 = 69;
-enum EM_68HC11 = 70;
-enum EM_68HC08 = 71;
-enum EM_68HC05 = 72;
-enum EM_SVX = 73;
-enum EM_ST19 = 74;
-enum EM_VAX = 75;
-enum EM_CRIS = 76;
-enum EM_JAVELIN = 77;
-enum EM_FIREPATH = 78;
-enum EM_ZSP = 79;
-enum EM_MMIX = 80;
-enum EM_HUANY = 81;
-enum EM_PRISM = 82;
-enum EM_AVR = 83;
-enum EM_FR30 = 84;
-enum EM_D10V = 85;
-enum EM_D30V = 86;
-enum EM_V850 = 87;
-enum EM_M32R = 88;
-enum EM_MN10300 = 89;
-enum EM_MN10200 = 90;
-enum EM_PJ = 91;
-enum EM_OPENRISC = 92;
-enum EM_ARC_A5 = 93;
-enum EM_XTENSA = 94;
-enum EM_NUM = 95;
-
-enum EV_NONE = 0;
-enum EV_CURRENT = 1;
-enum EV_NUM = 2;
-
-
-enum ELFOSABI_NONE = 0;
-enum ELFOSABI_SYSV = ELFOSABI_NONE;
-enum ELFOSABI_HPUX = 1;
-enum ELFOSABI_NETBSD = 2;
-enum ELFOSABI_LINUX = 3;
-enum ELFOSABI_UNKNOWN4 = 4;
-enum ELFOSABI_UNKNOWN5 = 5;
-enum ELFOSABI_SOLARIS = 6;
-enum ELFOSABI_AIX = 7;
-enum ELFOSABI_IRIX = 8;
-enum ELFOSABI_FREEBSD = 9;
-enum ELFOSABI_TRU64 = 10;
-enum ELFOSABI_MODESTO = 11;
-enum ELFOSABI_OPENBSD = 12;
-enum ELFOSABI_OPENVMS = 13;
-enum ELFOSABI_NSK = 14;
-enum ELFOSABI_AROS = 15;
-enum ELFOSABI_ARM = 97;
-enum ELFOSABI_STANDALONE = 255;
-enum ELFOSABI_DRAGONFLYBSD= ELFOSABI_NONE;
enum EAV_SUNW_NONE = 0;
enum EAV_SUNW_CURRENT = 1;
enum EAV_SUNW_NUM = 2;
-struct Elf32_Phdr
-{
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-}
-
-struct Elf64_Phdr
-{
- Elf64_Word p_type;
- Elf64_Word p_flags;
- Elf64_Off p_offset;
- Elf64_Addr p_vaddr;
- Elf64_Addr p_paddr;
- Elf64_Xword p_filesz;
- Elf64_Xword p_memsz;
- Elf64_Xword p_align;
-}
-
-enum PT_NULL = 0;
-enum PT_LOAD = 1;
-enum PT_DYNAMIC = 2;
-enum PT_INTERP = 3;
-enum PT_NOTE = 4;
-enum PT_SHLIB = 5;
-enum PT_PHDR = 6;
-enum PT_TLS = 7;
-enum PT_NUM = 8;
-
-enum PT_LOOS = 0x60000000;
-
enum PT_SUNW_UNWIND = 0x6464e550;
enum PT_SUNW_EH_FRAME = 0x6474e550;
-enum PT_GNU_EH_FRAME = PT_SUNW_EH_FRAME;
-enum PT_GNU_STACK = 0x6474e551;
-enum PT_GNU_RELRO = 0x6474e552;
-
-enum PT_LOSUNW = 0x6ffffffa;
-enum PT_SUNWBSS = 0x6ffffffa;
-enum PT_SUNWSTACK = 0x6ffffffb;
enum PT_SUNWDTRACE = 0x6ffffffc;
enum PT_SUNWCAP = 0x6ffffffd;
-enum PT_HISUNW = 0x6fffffff;
-enum PT_HIOS = 0x6fffffff;
-enum PT_LOPROC = 0x70000000;
-enum PT_HIPROC = 0x7fffffff;
-
-enum PF_R = 0x4;
-enum PF_W = 0x2;
-enum PF_X = 0x1;
-
-enum PF_MASKOS = 0x0ff00000;
-enum PF_MASKPROC = 0xf0000000;
enum PF_SUNW_FAILURE = 0x00100000;
enum PF_SUNW_KILLED = 0x00200000;
enum PF_SUNW_SIGINFO = 0x00400000;
-enum PN_XNUM = 0xffff;
-
-struct Elf32_Shdr
-{
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-}
-
-struct Elf64_Shdr
-{
- Elf64_Word sh_name;
- Elf64_Word sh_type;
- Elf64_Xword sh_flags;
- Elf64_Addr sh_addr;
- Elf64_Off sh_offset;
- Elf64_Xword sh_size;
- Elf64_Word sh_link;
- Elf64_Word sh_info;
- Elf64_Xword sh_addralign;
- Elf64_Xword sh_entsize;
-}
-
-enum SHT_NULL = 0;
-enum SHT_PROGBITS = 1;
-enum SHT_SYMTAB = 2;
-enum SHT_STRTAB = 3;
-enum SHT_RELA = 4;
-enum SHT_HASH = 5;
-enum SHT_DYNAMIC = 6;
-enum SHT_NOTE = 7;
-enum SHT_NOBITS = 8;
-enum SHT_REL = 9;
-enum SHT_SHLIB = 10;
-enum SHT_DYNSYM = 11;
-enum SHT_UNKNOWN12 = 12;
-enum SHT_UNKNOWN13 = 13;
-enum SHT_INIT_ARRAY = 14;
-enum SHT_FINI_ARRAY = 15;
-enum SHT_PREINIT_ARRAY = 16;
-enum SHT_GROUP = 17;
-enum SHT_SYMTAB_SHNDX = 18;
-enum SHT_NUM = 19;
-
-enum SHT_LOOS = 0x60000000;
-enum SHT_LOSUNW = 0x6fffffef;
enum SHT_SUNW_capchain = 0x6fffffef;
enum SHT_SUNW_capinfo = 0x6ffffff0;
enum SHT_SUNW_symsort = 0x6ffffff1;
@@ -363,106 +54,9 @@ enum SHT_SUNW_SIGNATURE = 0x6ffffff6;
enum SHT_SUNW_ANNOTATE = 0x6ffffff7;
enum SHT_SUNW_DEBUGSTR = 0x6ffffff8;
enum SHT_SUNW_DEBUG = 0x6ffffff9;
-enum SHT_SUNW_move = 0x6ffffffa;
-enum SHT_SUNW_COMDAT = 0x6ffffffb;
-enum SHT_SUNW_syminfo = 0x6ffffffc;
enum SHT_SUNW_verdef = 0x6ffffffd;
-enum SHT_GNU_verdef = SHT_SUNW_verdef;
enum SHT_SUNW_verneed = 0x6ffffffe;
-enum SHT_GNU_verneed = SHT_SUNW_verneed;
enum SHT_SUNW_versym = 0x6fffffff;
-enum SHT_GNU_versym = SHT_SUNW_versym;
-enum SHT_HISUNW = 0x6fffffff;
-enum SHT_HIOS = 0x6fffffff;
-enum SHT_GNU_ATTRIBUTES = 0x6ffffff5;
-enum SHT_GNU_HASH = 0x6ffffff6;
-enum SHT_GNU_LIBLIST = 0x6ffffff7;
-enum SHT_CHECKSUM = 0x6ffffff8;
-enum SHT_LOPROC = 0x70000000;
-enum SHT_HIPROC = 0x7fffffff;
-enum SHT_LOUSER = 0x80000000;
-enum SHT_HIUSER = 0xffffffff;
-
-enum SHF_WRITE = 0x01;
-enum SHF_ALLOC = 0x02;
-enum SHF_EXECINSTR = 0x04;
-enum SHF_MERGE = 0x10;
-enum SHF_STRINGS = 0x20;
-enum SHF_INFO_LINK = 0x40;
-enum SHF_LINK_ORDER = 0x80;
-enum SHF_OS_NONCONFORMING = 0x100;
-enum SHF_GROUP = 0x200;
-enum SHF_TLS = 0x400;
-enum SHF_COMPRESSED = 0x800;
-enum SHF_MASKOS = 0x0ff00000;
-
-enum SHF_MASKPROC = 0xf0000000;
-
-enum SHN_UNDEF = 0;
-enum SHN_LORESERVE = 0xff00;
-enum SHN_LOPROC = 0xff00;
-enum SHN_HIPROC = 0xff1f;
-enum SHN_LOOS = 0xff20;
-enum SHN_LOSUNW = 0xff3f;
-enum SHN_SUNW_IGNORE = 0xff3f;
-enum SHN_HISUNW = 0xff3f;
-enum SHN_HIOS = 0xff3f;
-enum SHN_ABS = 0xfff1;
-enum SHN_COMMON = 0xfff2;
-enum SHN_XINDEX = 0xffff;
-enum SHN_HIRESERVE = 0xffff;
-
-struct Elf32_Sym
-{
- Elf32_Word st_name;
- Elf32_Addr st_value;
- Elf32_Word st_size;
- ubyte st_info;
- ubyte st_other;
- Elf32_Half st_shndx;
-}
-
-struct Elf64_Sym
-{
- Elf64_Word st_name;
- ubyte st_info;
- ubyte st_other;
- Elf64_Half st_shndx;
- Elf64_Addr st_value;
- Elf64_Xword st_size;
-}
-
-enum STN_UNDEF = 0;
-
-extern (D)
-{
- auto ELF32_ST_BIND(T)(T val) { return cast(ubyte)val >> 4; }
- auto ELF32_ST_TYPE(T)(T val) { return val & 0xf; }
- auto ELF32_ST_INFO(B, T)(B bind, T type) { return (bind << 4) + (type & 0xf); }
- alias ELF32_ST_BIND ELF64_ST_BIND;
- alias ELF32_ST_TYPE ELF64_ST_TYPE;
- alias ELF32_ST_INFO ELF64_ST_INFO;
-}
-
-enum STB_LOCAL = 0;
-enum STB_GLOBAL = 1;
-enum STB_WEAK = 2;
-enum STB_NUM = 3;
-enum STB_LOPROC = 13;
-enum STB_HIPROC = 15;
-
-enum STT_NOTYPE = 0;
-enum STT_OBJECT = 1;
-enum STT_FUNC = 2;
-enum STT_SECTION = 3;
-enum STT_FILE = 4;
-enum STT_COMMON = 5;
-enum STT_TLS = 6;
-enum STT_NUM = 7;
-enum STT_LOOS = 10;
-enum STT_HIOS = 12;
-enum STT_LOPROC = 13;
-enum STT_HIPROC = 15;
extern (D)
{
@@ -470,58 +64,18 @@ extern (D)
alias ELF32_ST_VISIBILITY ELF64_ST_VISIBILITY;
}
-enum STV_DEFAULT = 0;
-enum STV_INTERNAL = 1;
-enum STV_HIDDEN = 2;
-enum STV_PROTECTED = 3;
enum STV_EXPORTED = 4;
enum STV_SINGLETON = 5;
enum STV_ELIMINATE = 6;
enum STV_NUM = 7;
-struct Elf32_Rel
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
-}
-
-struct Elf32_Rela
-{
- Elf32_Addr r_offset;
- Elf32_Word r_info;
- Elf32_Sword r_addend;
-}
-
-struct Elf64_Rel
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
-}
-
-struct Elf64_Rela
-{
- Elf64_Addr r_offset;
- Elf64_Xword r_info;
- Elf64_Sxword r_addend;
-}
-
extern (D)
{
- auto ELF32_R_SYM(V)(V val) { return val >> 8; }
- auto ELF32_R_TYPE(V)(V val) { return val & 0xff; }
- auto ELF32_R_INFO(S, T)(S sym, T type) { return (sym << 8) + (type & 0xff); }
-
- auto ELF64_R_SYM(I)(I i) { return i >> 32; }
- auto ELF64_R_TYPE(I)(I i) { return i & 0xffffffff; }
- auto ELF64_R_INFO(S, T)(S sym, T type) { return (sym << 32) + (type); }
-
auto ELF64_R_TYPE_DATA(I)(I i) { return (i << 32) >> 40; }
auto ELF64_R_TYPE_ID(I)(I i) { return (i << 56) >> 56; }
auto ELF64_R_TYPE_INFO(S, T)(S sym, T type) { return (sym <<8) + (type); }
}
-enum GRP_COMDAT = 0x01;
-
struct Elf32_Nhdr
{
Elf32_Word n_namesz;
@@ -536,35 +90,6 @@ struct Elf64_Nhdr
Elf64_Word n_type;
}
-struct Elf32_Move
-{
- Elf32_Lword m_value;
- Elf32_Word m_info;
- Elf32_Word m_poffset;
- Elf32_Half m_repeat;
- Elf32_Half m_stride;
-}
-
-extern (D)
-{
- auto ELF32_M_SYM(I)(I info) { return info >> 8; }
- auto ELF32_M_SIZE(I)(I info) { return cast(ubyte)info; }
- auto ELF32_M_INFO(S, SZ)(S sym, SZ size) { return (sym << 8) + cast(ubyte)size; }
-}
-
-struct Elf64_Move
-{
- Elf64_Lword m_value;
- Elf64_Xword m_info;
- Elf64_Xword m_poffset;
- Elf64_Half m_repeat;
- Elf64_Half m_stride;
-}
-
-alias ELF32_M_SYM ELF64_M_SYM;
-alias ELF32_M_SIZE ELF64_M_SIZE;
-alias ELF32_M_INFO ELF64_M_INFO;
-
struct Elf32_Cap
{
Elf32_Word c_tag;
@@ -578,7 +103,6 @@ struct Elf32_Cap
alias Elf32_Word Elf32_Capinfo;
alias Elf32_Word Elf32_Capchain;
-
alias ELF32_M_SYM ELF32_C_SYM;
alias ELF32_M_SIZE ELF32_C_GROUP;
alias ELF32_M_INFO ELF32_C_INFO;
@@ -596,13 +120,6 @@ struct Elf64_Cap
alias Elf64_Xword Elf64_Capinfo;
alias Elf64_Word Elf64_Capchain;
-/*
- * Macros to compose and decompose values for capabilities info.
- *
- * sym = ELF64_C_SYM(info)
- * grp = ELF64_C_GROUP(info)
- * info = ELF64_C_INFO(sym, grp)
- */
extern (D)
{
auto ELF64_C_SYM(I)(I info) { return info >> 32; }
@@ -656,6 +173,3 @@ enum NT_ZONENAME = 21;
enum NT_FDINFO = 22;
enum NT_SPYMASTER = 23;
enum NT_NUM = 23;
-
-enum SHF_ORDERED = 0x40000000;
-enum SHF_EXCLUDE = 0x80000000;
diff --git a/libphobos/libdruntime/core/sys/windows/objbase.d b/libphobos/libdruntime/core/sys/windows/objbase.d
index 3695ea6..bb9e7ea0 100644
--- a/libphobos/libdruntime/core/sys/windows/objbase.d
+++ b/libphobos/libdruntime/core/sys/windows/objbase.d
@@ -9,6 +9,7 @@
module core.sys.windows.objbase;
version (Windows):
@system:
+nothrow:
pragma(lib, "ole32");
import core.sys.windows.cguid, core.sys.windows.objidl, core.sys.windows.unknwn, core.sys.windows.wtypes;
diff --git a/libphobos/libdruntime/core/sys/windows/unknwn.d b/libphobos/libdruntime/core/sys/windows/unknwn.d
index 49d5abf..6db1db8 100644
--- a/libphobos/libdruntime/core/sys/windows/unknwn.d
+++ b/libphobos/libdruntime/core/sys/windows/unknwn.d
@@ -9,6 +9,7 @@
module core.sys.windows.unknwn;
version (Windows):
@system:
+nothrow:
import core.sys.windows.objfwd, core.sys.windows.windef, core.sys.windows.wtypes;
import core.sys.windows.basetyps;
diff --git a/libphobos/libdruntime/core/thread/osthread.d b/libphobos/libdruntime/core/thread/osthread.d
index ca36809..1bbce3f 100644
--- a/libphobos/libdruntime/core/thread/osthread.d
+++ b/libphobos/libdruntime/core/thread/osthread.d
@@ -1333,6 +1333,9 @@ private extern (D) ThreadBase attachThread(ThreadBase _thisThread) @nogc nothrow
* must be called after thread_attachThis:
*
* extern (C) void rt_moduleTlsCtor();
+ *
+ * See_Also:
+ * $(REF thread_detachThis, core,thread,threadbase)
*/
extern(C) Thread thread_attachThis()
{
@@ -2177,7 +2180,7 @@ extern (C) void thread_init() @nogc
}
private alias MainThreadStore = void[__traits(classInstanceSize, Thread)];
-package __gshared align(Thread.alignof) MainThreadStore _mainThreadStore;
+package __gshared align(__traits(classInstanceAlignment, Thread)) MainThreadStore _mainThreadStore;
/**
* Terminates the thread module. No other thread routine may be called
diff --git a/libphobos/libdruntime/core/thread/threadbase.d b/libphobos/libdruntime/core/thread/threadbase.d
index 9cee4d8..9042a36 100644
--- a/libphobos/libdruntime/core/thread/threadbase.d
+++ b/libphobos/libdruntime/core/thread/threadbase.d
@@ -80,9 +80,7 @@ private
{
// Handling unaligned mutexes are not supported on all platforms, so we must
// ensure that the address of all shared data are appropriately aligned.
- import core.internal.traits : classInstanceAlignment;
-
- enum mutexAlign = classInstanceAlignment!Mutex;
+ enum mutexAlign = __traits(classInstanceAlignment, Mutex);
enum mutexClassInstanceSize = __traits(classInstanceSize, Mutex);
alias swapContext = externDFunc!("core.thread.osthread.swapContext", void* function(void*) nothrow @nogc);
@@ -820,10 +818,13 @@ package ThreadT thread_attachThis_tpl(ThreadT)()
*
* NOTE: This routine does not run thread-local static destructors when called.
* If full functionality as a D thread is desired, the following function
- * must be called after thread_detachThis, particularly if the thread is
+ * must be called before thread_detachThis, particularly if the thread is
* being detached at some indeterminate time before program termination:
*
* $(D extern(C) void rt_moduleTlsDtor();)
+ *
+ * See_Also:
+ * $(REF thread_attachThis, core,thread,osthread)
*/
extern (C) void thread_detachThis() nothrow @nogc
{
diff --git a/libphobos/libdruntime/object.d b/libphobos/libdruntime/object.d
index e58afa2..3a88552 100644
--- a/libphobos/libdruntime/object.d
+++ b/libphobos/libdruntime/object.d
@@ -4882,7 +4882,8 @@ they are only intended to be instantiated by the compiler, not the user.
public import core.internal.entrypoint : _d_cmain;
-public import core.internal.array.appending : _d_arrayappendTImpl;
+public import core.internal.array.appending : _d_arrayappendT;
+public import core.internal.array.appending : _d_arrayappendTTrace;
public import core.internal.array.appending : _d_arrayappendcTXImpl;
public import core.internal.array.comparison : __cmp;
public import core.internal.array.equality : __equals;
diff --git a/libphobos/libdruntime/rt/lifetime.d b/libphobos/libdruntime/rt/lifetime.d
index b0e25b5..96d9a80 100644
--- a/libphobos/libdruntime/rt/lifetime.d
+++ b/libphobos/libdruntime/rt/lifetime.d
@@ -2126,7 +2126,7 @@ extern (C) void[] _d_arrayappendcd(ref byte[] x, dchar c) @weak
// Hack because _d_arrayappendT takes `x` as a reference
auto xx = cast(shared(char)[])x;
- object._d_arrayappendTImpl!(shared(char)[])._d_arrayappendT(xx, cast(shared(char)[])appendthis);
+ object._d_arrayappendT(xx, cast(shared(char)[])appendthis);
x = cast(byte[])xx;
return x;
}
@@ -2187,7 +2187,7 @@ extern (C) void[] _d_arrayappendwd(ref byte[] x, dchar c) @weak
//
auto xx = (cast(shared(wchar)*)x.ptr)[0 .. x.length];
- object._d_arrayappendTImpl!(shared(wchar)[])._d_arrayappendT(xx, cast(shared(wchar)[])appendthis);
+ object._d_arrayappendT(xx, cast(shared(wchar)[])appendthis);
x = (cast(byte*)xx.ptr)[0 .. xx.length];
return x;
}
diff --git a/libphobos/src/MERGE b/libphobos/src/MERGE
index 3218ace..3de142f 100644
--- a/libphobos/src/MERGE
+++ b/libphobos/src/MERGE
@@ -1,4 +1,4 @@
-ac296f80cda437483b743f953dc69cb1271c82df
+3a1cd9a01479155958c7799e573e55a93dd189a0
The first line of this file holds the git revision number of the last
merge done from the dlang/phobos repository.
diff --git a/libphobos/src/std/exception.d b/libphobos/src/std/exception.d
index 4f7f3c3..94a2e7a 100644
--- a/libphobos/src/std/exception.d
+++ b/libphobos/src/std/exception.d
@@ -1641,7 +1641,7 @@ package string errnoString(int errno) nothrow @trusted
class ErrnoException : Exception
{
/// Operating system error code.
- final @property uint errno() nothrow pure @nogc @safe { return _errno; }
+ final @property uint errno() nothrow pure scope @nogc @safe { return _errno; }
private uint _errno;
/// Constructor which takes an error message. The current global $(REF errno, core,stdc,errno) value is used as error code.
this(string msg, string file = null, size_t line = 0) @safe
diff --git a/libphobos/src/std/experimental/logger/core.d b/libphobos/src/std/experimental/logger/core.d
index 6a28de5..efc4ef7 100644
--- a/libphobos/src/std/experimental/logger/core.d
+++ b/libphobos/src/std/experimental/logger/core.d
@@ -1628,7 +1628,8 @@ private @property Logger defaultSharedLoggerImpl() @trusted
import core.lifetime : emplace;
import std.stdio : stderr;
- __gshared align(FileLogger.alignof) void[__traits(classInstanceSize, FileLogger)] _buffer;
+ __gshared align(__traits(classInstanceAlignment, FileLogger))
+ void[__traits(classInstanceSize, FileLogger)] _buffer;
import std.concurrency : initOnce;
initOnce!stdSharedDefaultLogger({
@@ -1762,9 +1763,8 @@ private @property Logger stdThreadLocalLogImpl() @trusted
{
import core.lifetime : emplace;
- static void*[(__traits(classInstanceSize, StdForwardLogger) - 1) / (void*).sizeof + 1] _buffer;
-
- auto buffer = cast(ubyte[]) _buffer;
+ static align(__traits(classInstanceAlignment, StdForwardLogger))
+ void[__traits(classInstanceSize, StdForwardLogger)] buffer;
if (stdLoggerDefaultThreadLogger is null)
{
diff --git a/libphobos/src/std/math/exponential.d b/libphobos/src/std/math/exponential.d
index a9ec930..daf2cec 100644
--- a/libphobos/src/std/math/exponential.d
+++ b/libphobos/src/std/math/exponential.d
@@ -968,10 +968,10 @@ if (isUnsigned!F && isUnsigned!G && isUnsigned!H)
pragma(inline, true)
real exp(real x) @trusted pure nothrow @nogc // TODO: @safe
{
- import std.math.constants : LOG2E;
-
version (InlineAsm_X87)
{
+ import std.math.constants : LOG2E;
+
// e^^x = 2^^(LOG2E*x)
// (This is valid because the overflow & underflow limits for exp
// and exp2 are so similar).
diff --git a/libphobos/src/std/math/hardware.d b/libphobos/src/std/math/hardware.d
index b768969..7bff07e 100644
--- a/libphobos/src/std/math/hardware.d
+++ b/libphobos/src/std/math/hardware.d
@@ -214,12 +214,12 @@ private:
}
else version (SPARC)
{
- /*
+ /*
int retval;
asm pure nothrow @nogc { st %fsr, retval; }
return retval;
*/
- assert(0, "Not yet supported");
+ assert(0, "Not yet supported");
}
else version (ARM)
{
diff --git a/libphobos/src/std/outbuffer.d b/libphobos/src/std/outbuffer.d
index c434481..92af9a9 100644
--- a/libphobos/src/std/outbuffer.d
+++ b/libphobos/src/std/outbuffer.d
@@ -173,21 +173,40 @@ class OutBuffer
}
/****************************************
- * Append nbytes of 0 to the internal buffer.
+ * Append nbytes of val to the internal buffer.
+ * Params:
+ * nbytes = Number of bytes to fill.
+ * val = Value to fill, defaults to 0.
*/
- void fill0(size_t nbytes)
+ void fill(size_t nbytes, ubyte val = 0)
{
reserve(nbytes);
- data[offset .. offset + nbytes] = 0;
+ data[offset .. offset + nbytes] = val;
offset += nbytes;
}
+ /****************************************
+ * Append nbytes of 0 to the internal buffer.
+ * Param:
+ * nbytes - number of bytes to fill.
+ */
+ void fill0(size_t nbytes)
+ {
+ fill(nbytes);
+ }
+
/**********************************
- * 0-fill to align on power of 2 boundary.
+ * Append bytes until the buffer aligns on a power of 2 boundary.
+ *
+ * By default fills with 0 bytes.
+ *
+ * Params:
+ * alignsize = Alignment value. Must be power of 2.
+ * val = Value to fill, defaults to 0.
*/
- void alignSize(size_t alignsize)
+ void alignSize(size_t alignsize, ubyte val = 0)
in
{
assert(alignsize && (alignsize & (alignsize - 1)) == 0);
@@ -200,7 +219,35 @@ class OutBuffer
{
auto nbytes = offset & (alignsize - 1);
if (nbytes)
- fill0(alignsize - nbytes);
+ fill(alignsize - nbytes, val);
+ }
+ ///
+ @safe unittest
+ {
+ OutBuffer buf = new OutBuffer();
+ buf.write(cast(ubyte) 1);
+ buf.align2();
+ assert(buf.toBytes() == "\x01\x00");
+ buf.write(cast(ubyte) 2);
+ buf.align4();
+ assert(buf.toBytes() == "\x01\x00\x02\x00");
+ buf.write(cast(ubyte) 3);
+ buf.alignSize(8);
+ assert(buf.toBytes() == "\x01\x00\x02\x00\x03\x00\x00\x00");
+ }
+ /// ditto
+ @safe unittest
+ {
+ OutBuffer buf = new OutBuffer();
+ buf.write(cast(ubyte) 1);
+ buf.align2(0x55);
+ assert(buf.toBytes() == "\x01\x55");
+ buf.write(cast(ubyte) 2);
+ buf.align4(0x55);
+ assert(buf.toBytes() == "\x01\x55\x02\x55");
+ buf.write(cast(ubyte) 3);
+ buf.alignSize(8, 0x55);
+ assert(buf.toBytes() == "\x01\x55\x02\x55\x03\x55\x55\x55");
}
/// Clear the data in the buffer
@@ -211,23 +258,27 @@ class OutBuffer
/****************************************
* Optimize common special case alignSize(2)
+ * Params:
+ * val = Value to fill, defaults to 0.
*/
- void align2()
+ void align2(ubyte val = 0)
{
if (offset & 1)
- write(cast(byte) 0);
+ write(cast(byte) val);
}
/****************************************
* Optimize common special case alignSize(4)
+ * Params:
+ * val = Value to fill, defaults to 0.
*/
- void align4()
+ void align4(ubyte val = 0)
{
if (offset & 3)
{ auto nbytes = (4 - offset) & 3;
- fill0(nbytes);
+ fill(nbytes, val);
}
}
diff --git a/libphobos/src/std/socket.d b/libphobos/src/std/socket.d
index 915159f..6ec7985 100644
--- a/libphobos/src/std/socket.d
+++ b/libphobos/src/std/socket.d
@@ -122,6 +122,12 @@ version (StdUnittest)
writefln("Ignoring std.socket(%d) test failure (likely caused by flaky environment): %s", line, e.msg);
}
}
+
+ // Without debug=std_socket, still compile the slow tests, just don't run them.
+ debug (std_socket)
+ private enum runSlowTests = true;
+ else
+ private enum runSlowTests = false;
}
/// Base exception thrown by `std.socket`.
@@ -1698,7 +1704,7 @@ public:
}
});
- debug (std_socket)
+ if (runSlowTests)
softUnittest({
// test failing reverse lookup
const InternetAddress ia = new InternetAddress("255.255.255.255", 80);
@@ -2633,7 +2639,7 @@ private:
@safe unittest
{
- debug (std_socket)
+ if (runSlowTests)
softUnittest({
import std.datetime.stopwatch;
import std.typecons;
@@ -3000,7 +3006,7 @@ public:
* Returns: The number of bytes actually sent, or `Socket.ERROR` on
* failure.
*/
- ptrdiff_t send(const(void)[] buf, SocketFlags flags) @trusted
+ ptrdiff_t send(scope const(void)[] buf, SocketFlags flags) @trusted
{
static if (is(typeof(MSG_NOSIGNAL)))
{
@@ -3014,7 +3020,7 @@ public:
}
/// ditto
- ptrdiff_t send(const(void)[] buf)
+ ptrdiff_t send(scope const(void)[] buf)
{
return send(buf, SocketFlags.NONE);
}
@@ -3026,7 +3032,7 @@ public:
* Returns: The number of bytes actually sent, or `Socket.ERROR` on
* failure.
*/
- ptrdiff_t sendTo(const(void)[] buf, SocketFlags flags, Address to) @trusted
+ ptrdiff_t sendTo(scope const(void)[] buf, SocketFlags flags, Address to) @trusted
{
static if (is(typeof(MSG_NOSIGNAL)))
{
@@ -3042,7 +3048,7 @@ public:
}
/// ditto
- ptrdiff_t sendTo(const(void)[] buf, Address to)
+ ptrdiff_t sendTo(scope const(void)[] buf, Address to)
{
return sendTo(buf, SocketFlags.NONE, to);
}
@@ -3050,7 +3056,7 @@ public:
//assumes you connect()ed
/// ditto
- ptrdiff_t sendTo(const(void)[] buf, SocketFlags flags) @trusted
+ ptrdiff_t sendTo(scope const(void)[] buf, SocketFlags flags) @trusted
{
static if (is(typeof(MSG_NOSIGNAL)))
{
@@ -3065,7 +3071,7 @@ public:
//assumes you connect()ed
/// ditto
- ptrdiff_t sendTo(const(void)[] buf)
+ ptrdiff_t sendTo(scope const(void)[] buf)
{
return sendTo(buf, SocketFlags.NONE);
}
@@ -3077,7 +3083,7 @@ public:
* Returns: The number of bytes actually received, `0` if the remote side
* has closed the connection, or `Socket.ERROR` on failure.
*/
- ptrdiff_t receive(void[] buf, SocketFlags flags) @trusted
+ ptrdiff_t receive(scope void[] buf, SocketFlags flags) @trusted
{
version (Windows) // Does not use size_t
{
@@ -3094,7 +3100,7 @@ public:
}
/// ditto
- ptrdiff_t receive(void[] buf)
+ ptrdiff_t receive(scope void[] buf)
{
return receive(buf, SocketFlags.NONE);
}
@@ -3106,7 +3112,7 @@ public:
* Returns: The number of bytes actually received, `0` if the remote side
* has closed the connection, or `Socket.ERROR` on failure.
*/
- ptrdiff_t receiveFrom(void[] buf, SocketFlags flags, ref Address from) @trusted
+ ptrdiff_t receiveFrom(scope void[] buf, SocketFlags flags, ref Address from) @trusted
{
if (!buf.length) //return 0 and don't think the connection closed
return 0;
@@ -3129,7 +3135,7 @@ public:
/// ditto
- ptrdiff_t receiveFrom(void[] buf, ref Address from)
+ ptrdiff_t receiveFrom(scope void[] buf, ref Address from)
{
return receiveFrom(buf, SocketFlags.NONE, from);
}
@@ -3137,7 +3143,7 @@ public:
//assumes you connect()ed
/// ditto
- ptrdiff_t receiveFrom(void[] buf, SocketFlags flags) @trusted
+ ptrdiff_t receiveFrom(scope void[] buf, SocketFlags flags) @trusted
{
if (!buf.length) //return 0 and don't think the connection closed
return 0;
@@ -3158,7 +3164,7 @@ public:
//assumes you connect()ed
/// ditto
- ptrdiff_t receiveFrom(void[] buf)
+ ptrdiff_t receiveFrom(scope void[] buf)
{
return receiveFrom(buf, SocketFlags.NONE);
}
@@ -3169,7 +3175,7 @@ public:
* Returns: The number of bytes written to `result`.
* The length, in bytes, of the actual result - very different from getsockopt()
*/
- int getOption(SocketOptionLevel level, SocketOption option, void[] result) @trusted
+ int getOption(SocketOptionLevel level, SocketOption option, scope void[] result) @trusted
{
socklen_t len = cast(socklen_t) result.length;
if (_SOCKET_ERROR == .getsockopt(sock, cast(int) level, cast(int) option, result.ptr, &len))
@@ -3217,7 +3223,7 @@ public:
}
/// Set a socket option.
- void setOption(SocketOptionLevel level, SocketOption option, void[] value) @trusted
+ void setOption(SocketOptionLevel level, SocketOption option, scope void[] value) @trusted
{
if (_SOCKET_ERROR == .setsockopt(sock, cast(int) level,
cast(int) option, value.ptr, cast(uint) value.length))
@@ -3647,55 +3653,55 @@ class UdpSocket: Socket
{
checkAttributes!q{@trusted}; assert(0);
}
- @trusted ptrdiff_t send(const(void)[] buf, SocketFlags flags)
+ @trusted ptrdiff_t send(scope const(void)[] buf, SocketFlags flags)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t send(const(void)[] buf)
+ @safe ptrdiff_t send(scope const(void)[] buf)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted ptrdiff_t sendTo(const(void)[] buf, SocketFlags flags, Address to)
+ @trusted ptrdiff_t sendTo(scope const(void)[] buf, SocketFlags flags, Address to)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t sendTo(const(void)[] buf, Address to)
+ @safe ptrdiff_t sendTo(scope const(void)[] buf, Address to)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted ptrdiff_t sendTo(const(void)[] buf, SocketFlags flags)
+ @trusted ptrdiff_t sendTo(scope const(void)[] buf, SocketFlags flags)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t sendTo(const(void)[] buf)
+ @safe ptrdiff_t sendTo(scope const(void)[] buf)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted ptrdiff_t receive(void[] buf, SocketFlags flags)
+ @trusted ptrdiff_t receive(scope void[] buf, SocketFlags flags)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t receive(void[] buf)
+ @safe ptrdiff_t receive(scope void[] buf)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted ptrdiff_t receiveFrom(void[] buf, SocketFlags flags, ref Address from)
+ @trusted ptrdiff_t receiveFrom(scope void[] buf, SocketFlags flags, ref Address from)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t receiveFrom(void[] buf, ref Address from)
+ @safe ptrdiff_t receiveFrom(scope void[] buf, ref Address from)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted ptrdiff_t receiveFrom(void[] buf, SocketFlags flags)
+ @trusted ptrdiff_t receiveFrom(scope void[] buf, SocketFlags flags)
{
checkAttributes!q{@trusted}; assert(0);
}
- @safe ptrdiff_t receiveFrom(void[] buf)
+ @safe ptrdiff_t receiveFrom(scope void[] buf)
{
checkAttributes!q{@safe}; assert(0);
}
- @trusted int getOption(SocketOptionLevel level, SocketOption option, void[] result)
+ @trusted int getOption(SocketOptionLevel level, SocketOption option, scope void[] result)
{
checkAttributes!q{@trusted}; assert(0);
}
@@ -3711,7 +3717,7 @@ class UdpSocket: Socket
{
checkAttributes!q{@trusted};
}
- @trusted void setOption(SocketOptionLevel level, SocketOption option, void[] value)
+ @trusted void setOption(SocketOptionLevel level, SocketOption option, scope void[] value)
{
checkAttributes!q{@trusted};
}
@@ -3793,11 +3799,11 @@ Socket[2] socketPair() @trusted
///
@safe unittest
{
- immutable ubyte[] data = [1, 2, 3, 4];
+ immutable ubyte[4] data = [1, 2, 3, 4];
auto pair = socketPair();
scope(exit) foreach (s; pair) s.close();
- pair[0].send(data);
+ pair[0].send(data[]);
auto buf = new ubyte[data.length];
pair[1].receive(buf);
diff --git a/libphobos/src/std/sumtype.d b/libphobos/src/std/sumtype.d
index dac531f..869c36f 100644
--- a/libphobos/src/std/sumtype.d
+++ b/libphobos/src/std/sumtype.d
@@ -1830,7 +1830,7 @@ class MatchException : Exception
template canMatch(alias handler, Ts...)
if (Ts.length > 0)
{
- enum canMatch = is(typeof((Ts args) => handler(args)));
+ enum canMatch = is(typeof((ref Ts args) => handler(args)));
}
///
@@ -2575,6 +2575,27 @@ version (D_Exceptions)
}
}
+// return ref
+// issue: https://issues.dlang.org/show_bug.cgi?id=23101
+@safe unittest
+{
+ static assert(!__traits(compiles, () {
+ SumType!(int, string) st;
+ return st.match!(
+ function int* (string x) => assert(0),
+ function int* (return ref int i) => &i,
+ );
+ }));
+
+ SumType!(int, string) st;
+ static assert(__traits(compiles, () {
+ return st.match!(
+ function int* (string x) => null,
+ function int* (return ref int i) => &i,
+ );
+ }));
+}
+
private void destroyIfOwner(T)(ref T value)
{
static if (hasElaborateDestructor!T)
diff --git a/libphobos/src/std/traits.d b/libphobos/src/std/traits.d
index 18400e3..cc08ea6 100644
--- a/libphobos/src/std/traits.d
+++ b/libphobos/src/std/traits.d
@@ -788,7 +788,8 @@ private template fqnType(T,
~ (attrs & FA.trusted ? " @trusted" : "")
~ (attrs & FA.safe ? " @safe" : "")
~ (attrs & FA.nogc ? " @nogc" : "")
- ~ (attrs & FA.return_ ? " return" : "");
+ ~ (attrs & FA.return_ ? " return" : "")
+ ~ (attrs & FA.live ? " @live" : "");
}
string addQualifiers(string typeString,
@@ -4838,7 +4839,7 @@ Returns class instance alignment.
template classInstanceAlignment(T)
if (is(T == class))
{
- alias classInstanceAlignment = maxAlignment!(void*, typeof(T.tupleof));
+ enum classInstanceAlignment = __traits(classInstanceAlignment, T);
}
///
diff --git a/libphobos/src/std/typecons.d b/libphobos/src/std/typecons.d
index 1ee7faa..8a3e22f 100644
--- a/libphobos/src/std/typecons.d
+++ b/libphobos/src/std/typecons.d
@@ -8267,7 +8267,7 @@ if (is(T == class))
{
// _d_newclass now use default GC alignment (looks like (void*).sizeof * 2 for
// small objects). We will just use the maximum of filed alignments.
- alias alignment = classInstanceAlignment!T;
+ enum alignment = __traits(classInstanceAlignment, T);
alias aligned = _alignUp!alignment;
static struct Scoped
@@ -9418,6 +9418,8 @@ private template replaceTypeInFunctionTypeUnless(alias pred, From, To, fun)
result ~= " shared";
static if (attributes & FunctionAttribute.return_)
result ~= " return";
+ static if (attributes & FunctionAttribute.live)
+ result ~= " @live";
return result;
}
diff --git a/libphobos/testsuite/libphobos.init_fini/custom_gc.d b/libphobos/testsuite/libphobos.init_fini/custom_gc.d
index a5e2bf4..ee2dcee 100644
--- a/libphobos/testsuite/libphobos.init_fini/custom_gc.d
+++ b/libphobos/testsuite/libphobos.init_fini/custom_gc.d
@@ -26,7 +26,8 @@ nothrow @nogc:
{
import core.stdc.string : memcpy;
- __gshared ubyte[__traits(classInstanceSize, MallocGC)] buf;
+ __gshared align(__traits(classInstanceAlignment, MallocGC))
+ ubyte[__traits(classInstanceSize, MallocGC)] buf;
auto init = typeid(MallocGC).initializer();
assert(init.length == buf.length);