diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-05-16 18:30:46 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2022-05-16 19:07:45 +0200 |
commit | 5eb9927aae076200bb7ba3f22c33b0a7c97c5643 (patch) | |
tree | f80210439a5d8995ebf189bce7f2e141fcb1caec /libphobos | |
parent | 682e587f1021241758f7dfe0b22651008622a312 (diff) | |
download | gcc-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')
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); |