Commit 8b651828 by Iain Buclaw Committed by Iain Buclaw

libphobos: Move rt.sections modules to gcc.sections

These modules depend on a mixture between how the compiler emits
run-time module information, and what functions are exposed by the
platform to inquire about loaded global and thread-local data sections.

As the upstream implementation is written to work only with how the
reference D compiler writes out data, much of what is present does not
apply to the GCC D front-end.  So it has been moved to a non-upstream
location in the source tree, where most of it will be rewritten once
each port has been completed.

The only tested module sections/elf_shared.d has been cleaned up so that
all deprecated declarations have been removed, as well as the brittle
module collision checking, which required bss_sections.c.  All other
ports have been left unchanged apart from a commonizing of attributes.

libphobos/ChangeLog:

2019-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* libdruntime/Makefile.am (DRUNTIME_CSOURCES): Remove bss_sections.c.
	(DRUNTIME_DSOURCES): Rename rt/sections_* modules to gcc/sections/*.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/gcc/sections/android.d: New file.
	* libdruntime/gcc/sections/elf_shared.d: New file.
	* libdruntime/gcc/sections/osx.d: New file.
	* libdruntime/gcc/sections/package.d: New file.
	* libdruntime/gcc/sections/solaris.d: New file.
	* libdruntime/gcc/sections/win32.d: New file.
	* libdruntime/gcc/sections/win64.d: New file.
	* libdruntime/rt/bss_section.c: Remove.
	* libdruntime/rt/sections.d: Publicly import gcc.sections.
	* libdruntime/rt/sections_android.d: Remove.
	* libdruntime/rt/sections_elf_shared.d: Remove.
	* libdruntime/rt/sections_osx.d: Remove.
	* libdruntime/rt/sections_solaris.d: Remove.
	* libdruntime/rt/sections_win32.d: Remove.
	* libdruntime/rt/sections_win64.d: Remove.

From-SVN: r270341
parent 151c5c0b
2019-04-13 Iain Buclaw <ibuclaw@gdcproject.org>
* libdruntime/Makefile.am (DRUNTIME_CSOURCES): Remove bss_sections.c.
(DRUNTIME_DSOURCES): Rename rt/sections_* modules to gcc/sections/*.
* libdruntime/Makefile.in: Regenerate.
* libdruntime/gcc/sections/android.d: New file.
* libdruntime/gcc/sections/elf_shared.d: New file.
* libdruntime/gcc/sections/osx.d: New file.
* libdruntime/gcc/sections/package.d: New file.
* libdruntime/gcc/sections/solaris.d: New file.
* libdruntime/gcc/sections/win32.d: New file.
* libdruntime/gcc/sections/win64.d: New file.
* libdruntime/rt/bss_section.c: Remove.
* libdruntime/rt/sections.d: Publicly import gcc.sections.
* libdruntime/rt/sections_android.d: Remove.
* libdruntime/rt/sections_elf_shared.d: Remove.
* libdruntime/rt/sections_osx.d: Remove.
* libdruntime/rt/sections_solaris.d: Remove.
* libdruntime/rt/sections_win32.d: Remove.
* libdruntime/rt/sections_win64.d: Remove.
2019-04-12 Iain Buclaw <ibuclaw@gdcproject.org> 2019-04-12 Iain Buclaw <ibuclaw@gdcproject.org>
* configure.ac (AM_INIT_AUTOMAKE): Add subdir-objects. * configure.ac (AM_INIT_AUTOMAKE): Add subdir-objects.
......
...@@ -122,7 +122,7 @@ DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d ...@@ -122,7 +122,7 @@ DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d
# https://www.gnu.org/software/automake/manual/html_node/Wildcards.html # https://www.gnu.org/software/automake/manual/html_node/Wildcards.html
DRUNTIME_SSOURCES = core/threadasm.S DRUNTIME_SSOURCES = core/threadasm.S
DRUNTIME_CSOURCES = core/stdc/errno_.c rt/bss_section.c DRUNTIME_CSOURCES = core/stdc/errno_.c
DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \
core/checkedint.d core/cpuid.d core/demangle.d core/exception.d \ core/checkedint.d core/cpuid.d core/demangle.d core/exception.d \
...@@ -140,14 +140,14 @@ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \ ...@@ -140,14 +140,14 @@ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \
core/sync/config.d core/sync/exception.d core/sync/mutex.d \ core/sync/config.d core/sync/exception.d core/sync/mutex.d \
core/sync/rwmutex.d core/sync/semaphore.d core/thread.d core/time.d \ core/sync/rwmutex.d core/sync/semaphore.d core/thread.d core/time.d \
core/vararg.d gcc/attribute.d gcc/backtrace.d gcc/builtins.d gcc/deh.d \ core/vararg.d gcc/attribute.d gcc/backtrace.d gcc/builtins.d gcc/deh.d \
gcc/unwind/arm.d gcc/unwind/arm_common.d gcc/unwind/c6x.d \ gcc/sections/android.d gcc/sections/elf_shared.d gcc/sections/osx.d \
gcc/unwind/generic.d gcc/unwind/package.d gcc/unwind/pe.d object.d \ gcc/sections/package.d gcc/sections/solaris.d gcc/sections/win32.d \
rt/aApply.d rt/aApplyR.d rt/aaA.d rt/adi.d rt/arrayassign.d \ gcc/sections/win64.d gcc/unwind/arm.d gcc/unwind/arm_common.d \
rt/arraycast.d rt/arraycat.d rt/cast_.d rt/config.d rt/critical_.d \ gcc/unwind/c6x.d gcc/unwind/generic.d gcc/unwind/package.d \
rt/deh.d rt/dmain2.d rt/invariant.d rt/lifetime.d rt/memory.d \ gcc/unwind/pe.d object.d rt/aApply.d rt/aApplyR.d rt/aaA.d rt/adi.d \
rt/minfo.d rt/monitor_.d rt/obj.d rt/qsort.d rt/sections.d \ rt/arrayassign.d rt/arraycast.d rt/arraycat.d rt/cast_.d rt/config.d \
rt/sections_android.d rt/sections_elf_shared.d rt/sections_osx.d \ rt/critical_.d rt/deh.d rt/dmain2.d rt/invariant.d rt/lifetime.d \
rt/sections_solaris.d rt/sections_win32.d rt/sections_win64.d \ rt/memory.d rt/minfo.d rt/monitor_.d rt/obj.d rt/qsort.d rt/sections.d \
rt/switch_.d rt/tlsgc.d rt/typeinfo/ti_Acdouble.d \ rt/switch_.d rt/tlsgc.d rt/typeinfo/ti_Acdouble.d \
rt/typeinfo/ti_Acfloat.d rt/typeinfo/ti_Acreal.d \ rt/typeinfo/ti_Acfloat.d rt/typeinfo/ti_Acreal.d \
rt/typeinfo/ti_Adouble.d rt/typeinfo/ti_Afloat.d rt/typeinfo/ti_Ag.d \ rt/typeinfo/ti_Adouble.d rt/typeinfo/ti_Afloat.d rt/typeinfo/ti_Ag.d \
......
...@@ -194,7 +194,10 @@ am__objects_1 = core/atomic.lo core/attribute.lo core/bitop.lo \ ...@@ -194,7 +194,10 @@ am__objects_1 = core/atomic.lo core/attribute.lo core/bitop.lo \
core/sync/exception.lo core/sync/mutex.lo core/sync/rwmutex.lo \ core/sync/exception.lo core/sync/mutex.lo core/sync/rwmutex.lo \
core/sync/semaphore.lo core/thread.lo core/time.lo \ core/sync/semaphore.lo core/thread.lo core/time.lo \
core/vararg.lo gcc/attribute.lo gcc/backtrace.lo \ core/vararg.lo gcc/attribute.lo gcc/backtrace.lo \
gcc/builtins.lo gcc/deh.lo gcc/unwind/arm.lo \ gcc/builtins.lo gcc/deh.lo gcc/sections/android.lo \
gcc/sections/elf_shared.lo gcc/sections/osx.lo \
gcc/sections/package.lo gcc/sections/solaris.lo \
gcc/sections/win32.lo gcc/sections/win64.lo gcc/unwind/arm.lo \
gcc/unwind/arm_common.lo gcc/unwind/c6x.lo \ gcc/unwind/arm_common.lo gcc/unwind/c6x.lo \
gcc/unwind/generic.lo gcc/unwind/package.lo gcc/unwind/pe.lo \ gcc/unwind/generic.lo gcc/unwind/package.lo gcc/unwind/pe.lo \
object.lo rt/aApply.lo rt/aApplyR.lo rt/aaA.lo rt/adi.lo \ object.lo rt/aApply.lo rt/aApplyR.lo rt/aaA.lo rt/adi.lo \
...@@ -202,31 +205,29 @@ am__objects_1 = core/atomic.lo core/attribute.lo core/bitop.lo \ ...@@ -202,31 +205,29 @@ am__objects_1 = core/atomic.lo core/attribute.lo core/bitop.lo \
rt/config.lo rt/critical_.lo rt/deh.lo rt/dmain2.lo \ rt/config.lo rt/critical_.lo rt/deh.lo rt/dmain2.lo \
rt/invariant.lo rt/lifetime.lo rt/memory.lo rt/minfo.lo \ rt/invariant.lo rt/lifetime.lo rt/memory.lo rt/minfo.lo \
rt/monitor_.lo rt/obj.lo rt/qsort.lo rt/sections.lo \ rt/monitor_.lo rt/obj.lo rt/qsort.lo rt/sections.lo \
rt/sections_android.lo rt/sections_elf_shared.lo \ rt/switch_.lo rt/tlsgc.lo rt/typeinfo/ti_Acdouble.lo \
rt/sections_osx.lo rt/sections_solaris.lo rt/sections_win32.lo \ rt/typeinfo/ti_Acfloat.lo rt/typeinfo/ti_Acreal.lo \
rt/sections_win64.lo rt/switch_.lo rt/tlsgc.lo \ rt/typeinfo/ti_Adouble.lo rt/typeinfo/ti_Afloat.lo \
rt/typeinfo/ti_Acdouble.lo rt/typeinfo/ti_Acfloat.lo \ rt/typeinfo/ti_Ag.lo rt/typeinfo/ti_Aint.lo \
rt/typeinfo/ti_Acreal.lo rt/typeinfo/ti_Adouble.lo \ rt/typeinfo/ti_Along.lo rt/typeinfo/ti_Areal.lo \
rt/typeinfo/ti_Afloat.lo rt/typeinfo/ti_Ag.lo \ rt/typeinfo/ti_Ashort.lo rt/typeinfo/ti_C.lo \
rt/typeinfo/ti_Aint.lo rt/typeinfo/ti_Along.lo \ rt/typeinfo/ti_byte.lo rt/typeinfo/ti_cdouble.lo \
rt/typeinfo/ti_Areal.lo rt/typeinfo/ti_Ashort.lo \ rt/typeinfo/ti_cent.lo rt/typeinfo/ti_cfloat.lo \
rt/typeinfo/ti_C.lo rt/typeinfo/ti_byte.lo \ rt/typeinfo/ti_char.lo rt/typeinfo/ti_creal.lo \
rt/typeinfo/ti_cdouble.lo rt/typeinfo/ti_cent.lo \ rt/typeinfo/ti_dchar.lo rt/typeinfo/ti_delegate.lo \
rt/typeinfo/ti_cfloat.lo rt/typeinfo/ti_char.lo \ rt/typeinfo/ti_double.lo rt/typeinfo/ti_float.lo \
rt/typeinfo/ti_creal.lo rt/typeinfo/ti_dchar.lo \ rt/typeinfo/ti_idouble.lo rt/typeinfo/ti_ifloat.lo \
rt/typeinfo/ti_delegate.lo rt/typeinfo/ti_double.lo \ rt/typeinfo/ti_int.lo rt/typeinfo/ti_ireal.lo \
rt/typeinfo/ti_float.lo rt/typeinfo/ti_idouble.lo \ rt/typeinfo/ti_long.lo rt/typeinfo/ti_n.lo \
rt/typeinfo/ti_ifloat.lo rt/typeinfo/ti_int.lo \ rt/typeinfo/ti_ptr.lo rt/typeinfo/ti_real.lo \
rt/typeinfo/ti_ireal.lo rt/typeinfo/ti_long.lo \ rt/typeinfo/ti_short.lo rt/typeinfo/ti_ubyte.lo \
rt/typeinfo/ti_n.lo rt/typeinfo/ti_ptr.lo \ rt/typeinfo/ti_ucent.lo rt/typeinfo/ti_uint.lo \
rt/typeinfo/ti_real.lo rt/typeinfo/ti_short.lo \ rt/typeinfo/ti_ulong.lo rt/typeinfo/ti_ushort.lo \
rt/typeinfo/ti_ubyte.lo rt/typeinfo/ti_ucent.lo \ rt/typeinfo/ti_void.lo rt/typeinfo/ti_wchar.lo \
rt/typeinfo/ti_uint.lo rt/typeinfo/ti_ulong.lo \ rt/util/array.lo rt/util/container/array.lo \
rt/typeinfo/ti_ushort.lo rt/typeinfo/ti_void.lo \ rt/util/container/common.lo rt/util/container/hashtab.lo \
rt/typeinfo/ti_wchar.lo rt/util/array.lo \ rt/util/container/treap.lo rt/util/random.lo \
rt/util/container/array.lo rt/util/container/common.lo \ rt/util/typeinfo.lo rt/util/utf.lo
rt/util/container/hashtab.lo rt/util/container/treap.lo \
rt/util/random.lo rt/util/typeinfo.lo rt/util/utf.lo
am__objects_2 = gc/bits.lo gc/config.lo gc/gcinterface.lo \ am__objects_2 = gc/bits.lo gc/config.lo gc/gcinterface.lo \
gc/impl/conservative/gc.lo gc/impl/manual/gc.lo gc/os.lo \ gc/impl/conservative/gc.lo gc/impl/manual/gc.lo gc/os.lo \
gc/pooltable.lo gc/proxy.lo gc/pooltable.lo gc/proxy.lo
...@@ -425,8 +426,7 @@ am__objects_27 = $(am__objects_1) $(am__objects_3) $(am__objects_5) \ ...@@ -425,8 +426,7 @@ am__objects_27 = $(am__objects_1) $(am__objects_3) $(am__objects_5) \
$(am__objects_13) $(am__objects_15) $(am__objects_17) \ $(am__objects_13) $(am__objects_15) $(am__objects_17) \
$(am__objects_19) $(am__objects_21) $(am__objects_23) \ $(am__objects_19) $(am__objects_21) $(am__objects_23) \
$(am__objects_25) $(am__objects_26) $(am__objects_25) $(am__objects_26)
am__objects_28 = core/stdc/libgdruntime_la-errno_.lo \ am__objects_28 = core/stdc/libgdruntime_la-errno_.lo
rt/libgdruntime_la-bss_section.lo
am__objects_29 = core/libgdruntime_la-threadasm.lo am__objects_29 = core/libgdruntime_la-threadasm.lo
am__objects_30 = $(am__objects_27) $(am__objects_28) $(am__objects_29) am__objects_30 = $(am__objects_27) $(am__objects_28) $(am__objects_29)
am_libgdruntime_la_OBJECTS = $(am__objects_30) am_libgdruntime_la_OBJECTS = $(am__objects_30)
...@@ -719,7 +719,7 @@ DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d ...@@ -719,7 +719,7 @@ DRUNTIME_DSOURCES_GENERATED = gcc/config.d gcc/libbacktrace.d
# Can't use wildcards here: # Can't use wildcards here:
# https://www.gnu.org/software/automake/manual/html_node/Wildcards.html # https://www.gnu.org/software/automake/manual/html_node/Wildcards.html
DRUNTIME_SSOURCES = core/threadasm.S DRUNTIME_SSOURCES = core/threadasm.S
DRUNTIME_CSOURCES = core/stdc/errno_.c rt/bss_section.c DRUNTIME_CSOURCES = core/stdc/errno_.c
DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \
core/checkedint.d core/cpuid.d core/demangle.d core/exception.d \ core/checkedint.d core/cpuid.d core/demangle.d core/exception.d \
core/internal/abort.d core/internal/arrayop.d core/internal/convert.d \ core/internal/abort.d core/internal/arrayop.d core/internal/convert.d \
...@@ -736,14 +736,14 @@ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \ ...@@ -736,14 +736,14 @@ DRUNTIME_DSOURCES = core/atomic.d core/attribute.d core/bitop.d \
core/sync/config.d core/sync/exception.d core/sync/mutex.d \ core/sync/config.d core/sync/exception.d core/sync/mutex.d \
core/sync/rwmutex.d core/sync/semaphore.d core/thread.d core/time.d \ core/sync/rwmutex.d core/sync/semaphore.d core/thread.d core/time.d \
core/vararg.d gcc/attribute.d gcc/backtrace.d gcc/builtins.d gcc/deh.d \ core/vararg.d gcc/attribute.d gcc/backtrace.d gcc/builtins.d gcc/deh.d \
gcc/unwind/arm.d gcc/unwind/arm_common.d gcc/unwind/c6x.d \ gcc/sections/android.d gcc/sections/elf_shared.d gcc/sections/osx.d \
gcc/unwind/generic.d gcc/unwind/package.d gcc/unwind/pe.d object.d \ gcc/sections/package.d gcc/sections/solaris.d gcc/sections/win32.d \
rt/aApply.d rt/aApplyR.d rt/aaA.d rt/adi.d rt/arrayassign.d \ gcc/sections/win64.d gcc/unwind/arm.d gcc/unwind/arm_common.d \
rt/arraycast.d rt/arraycat.d rt/cast_.d rt/config.d rt/critical_.d \ gcc/unwind/c6x.d gcc/unwind/generic.d gcc/unwind/package.d \
rt/deh.d rt/dmain2.d rt/invariant.d rt/lifetime.d rt/memory.d \ gcc/unwind/pe.d object.d rt/aApply.d rt/aApplyR.d rt/aaA.d rt/adi.d \
rt/minfo.d rt/monitor_.d rt/obj.d rt/qsort.d rt/sections.d \ rt/arrayassign.d rt/arraycast.d rt/arraycat.d rt/cast_.d rt/config.d \
rt/sections_android.d rt/sections_elf_shared.d rt/sections_osx.d \ rt/critical_.d rt/deh.d rt/dmain2.d rt/invariant.d rt/lifetime.d \
rt/sections_solaris.d rt/sections_win32.d rt/sections_win64.d \ rt/memory.d rt/minfo.d rt/monitor_.d rt/obj.d rt/qsort.d rt/sections.d \
rt/switch_.d rt/tlsgc.d rt/typeinfo/ti_Acdouble.d \ rt/switch_.d rt/tlsgc.d rt/typeinfo/ti_Acdouble.d \
rt/typeinfo/ti_Acfloat.d rt/typeinfo/ti_Acreal.d \ rt/typeinfo/ti_Acfloat.d rt/typeinfo/ti_Acreal.d \
rt/typeinfo/ti_Adouble.d rt/typeinfo/ti_Afloat.d rt/typeinfo/ti_Ag.d \ rt/typeinfo/ti_Adouble.d rt/typeinfo/ti_Afloat.d rt/typeinfo/ti_Ag.d \
...@@ -1083,6 +1083,16 @@ gcc/attribute.lo: gcc/$(am__dirstamp) ...@@ -1083,6 +1083,16 @@ gcc/attribute.lo: gcc/$(am__dirstamp)
gcc/backtrace.lo: gcc/$(am__dirstamp) gcc/backtrace.lo: gcc/$(am__dirstamp)
gcc/builtins.lo: gcc/$(am__dirstamp) gcc/builtins.lo: gcc/$(am__dirstamp)
gcc/deh.lo: gcc/$(am__dirstamp) gcc/deh.lo: gcc/$(am__dirstamp)
gcc/sections/$(am__dirstamp):
@$(MKDIR_P) gcc/sections
@: > gcc/sections/$(am__dirstamp)
gcc/sections/android.lo: gcc/sections/$(am__dirstamp)
gcc/sections/elf_shared.lo: gcc/sections/$(am__dirstamp)
gcc/sections/osx.lo: gcc/sections/$(am__dirstamp)
gcc/sections/package.lo: gcc/sections/$(am__dirstamp)
gcc/sections/solaris.lo: gcc/sections/$(am__dirstamp)
gcc/sections/win32.lo: gcc/sections/$(am__dirstamp)
gcc/sections/win64.lo: gcc/sections/$(am__dirstamp)
gcc/unwind/$(am__dirstamp): gcc/unwind/$(am__dirstamp):
@$(MKDIR_P) gcc/unwind @$(MKDIR_P) gcc/unwind
@: > gcc/unwind/$(am__dirstamp) @: > gcc/unwind/$(am__dirstamp)
...@@ -1115,12 +1125,6 @@ rt/monitor_.lo: rt/$(am__dirstamp) ...@@ -1115,12 +1125,6 @@ rt/monitor_.lo: rt/$(am__dirstamp)
rt/obj.lo: rt/$(am__dirstamp) rt/obj.lo: rt/$(am__dirstamp)
rt/qsort.lo: rt/$(am__dirstamp) rt/qsort.lo: rt/$(am__dirstamp)
rt/sections.lo: rt/$(am__dirstamp) rt/sections.lo: rt/$(am__dirstamp)
rt/sections_android.lo: rt/$(am__dirstamp)
rt/sections_elf_shared.lo: rt/$(am__dirstamp)
rt/sections_osx.lo: rt/$(am__dirstamp)
rt/sections_solaris.lo: rt/$(am__dirstamp)
rt/sections_win32.lo: rt/$(am__dirstamp)
rt/sections_win64.lo: rt/$(am__dirstamp)
rt/switch_.lo: rt/$(am__dirstamp) rt/switch_.lo: rt/$(am__dirstamp)
rt/tlsgc.lo: rt/$(am__dirstamp) rt/tlsgc.lo: rt/$(am__dirstamp)
rt/typeinfo/$(am__dirstamp): rt/typeinfo/$(am__dirstamp):
...@@ -1627,7 +1631,6 @@ core/sys/solaris/time.lo: core/sys/solaris/$(am__dirstamp) ...@@ -1627,7 +1631,6 @@ core/sys/solaris/time.lo: core/sys/solaris/$(am__dirstamp)
gcc/config.lo: gcc/$(am__dirstamp) gcc/config.lo: gcc/$(am__dirstamp)
gcc/libbacktrace.lo: gcc/$(am__dirstamp) gcc/libbacktrace.lo: gcc/$(am__dirstamp)
core/stdc/libgdruntime_la-errno_.lo: core/stdc/$(am__dirstamp) core/stdc/libgdruntime_la-errno_.lo: core/stdc/$(am__dirstamp)
rt/libgdruntime_la-bss_section.lo: rt/$(am__dirstamp)
core/libgdruntime_la-threadasm.lo: core/$(am__dirstamp) core/libgdruntime_la-threadasm.lo: core/$(am__dirstamp)
libgdruntime.la: $(libgdruntime_la_OBJECTS) $(libgdruntime_la_DEPENDENCIES) $(EXTRA_libgdruntime_la_DEPENDENCIES) libgdruntime.la: $(libgdruntime_la_OBJECTS) $(libgdruntime_la_DEPENDENCIES) $(EXTRA_libgdruntime_la_DEPENDENCIES)
...@@ -1703,6 +1706,8 @@ mostlyclean-compile: ...@@ -1703,6 +1706,8 @@ mostlyclean-compile:
-rm -f gc/impl/manual/*.lo -rm -f gc/impl/manual/*.lo
-rm -f gcc/*.$(OBJEXT) -rm -f gcc/*.$(OBJEXT)
-rm -f gcc/*.lo -rm -f gcc/*.lo
-rm -f gcc/sections/*.$(OBJEXT)
-rm -f gcc/sections/*.lo
-rm -f gcc/unwind/*.$(OBJEXT) -rm -f gcc/unwind/*.$(OBJEXT)
-rm -f gcc/unwind/*.lo -rm -f gcc/unwind/*.lo
-rm -f gcstub/*.$(OBJEXT) -rm -f gcstub/*.$(OBJEXT)
...@@ -1743,9 +1748,6 @@ core/libgdruntime_la-threadasm.lo: core/threadasm.S ...@@ -1743,9 +1748,6 @@ core/libgdruntime_la-threadasm.lo: core/threadasm.S
core/stdc/libgdruntime_la-errno_.lo: core/stdc/errno_.c core/stdc/libgdruntime_la-errno_.lo: core/stdc/errno_.c
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgdruntime_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/stdc/libgdruntime_la-errno_.lo `test -f 'core/stdc/errno_.c' || echo '$(srcdir)/'`core/stdc/errno_.c $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgdruntime_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o core/stdc/libgdruntime_la-errno_.lo `test -f 'core/stdc/errno_.c' || echo '$(srcdir)/'`core/stdc/errno_.c
rt/libgdruntime_la-bss_section.lo: rt/bss_section.c
$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgdruntime_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rt/libgdruntime_la-bss_section.lo `test -f 'rt/bss_section.c' || echo '$(srcdir)/'`rt/bss_section.c
mostlyclean-libtool: mostlyclean-libtool:
-rm -f *.lo -rm -f *.lo
...@@ -1785,6 +1787,7 @@ clean-libtool: ...@@ -1785,6 +1787,7 @@ clean-libtool:
-rm -rf gc/impl/conservative/.libs gc/impl/conservative/_libs -rm -rf gc/impl/conservative/.libs gc/impl/conservative/_libs
-rm -rf gc/impl/manual/.libs gc/impl/manual/_libs -rm -rf gc/impl/manual/.libs gc/impl/manual/_libs
-rm -rf gcc/.libs gcc/_libs -rm -rf gcc/.libs gcc/_libs
-rm -rf gcc/sections/.libs gcc/sections/_libs
-rm -rf gcc/unwind/.libs gcc/unwind/_libs -rm -rf gcc/unwind/.libs gcc/unwind/_libs
-rm -rf gcstub/.libs gcstub/_libs -rm -rf gcstub/.libs gcstub/_libs
-rm -rf rt/.libs rt/_libs -rm -rf rt/.libs rt/_libs
...@@ -1931,6 +1934,7 @@ distclean-generic: ...@@ -1931,6 +1934,7 @@ distclean-generic:
-rm -f gc/impl/conservative/$(am__dirstamp) -rm -f gc/impl/conservative/$(am__dirstamp)
-rm -f gc/impl/manual/$(am__dirstamp) -rm -f gc/impl/manual/$(am__dirstamp)
-rm -f gcc/$(am__dirstamp) -rm -f gcc/$(am__dirstamp)
-rm -f gcc/sections/$(am__dirstamp)
-rm -f gcc/unwind/$(am__dirstamp) -rm -f gcc/unwind/$(am__dirstamp)
-rm -f gcstub/$(am__dirstamp) -rm -f gcstub/$(am__dirstamp)
-rm -f rt/$(am__dirstamp) -rm -f rt/$(am__dirstamp)
......
/** // Bionic-specific support for sections.
* Written in the D programming language. // Copyright (C) 2019 Free Software Foundation, Inc.
* This module provides bionic-specific support for sections.
* // GCC is free software; you can redistribute it and/or modify it under
* Copyright: Copyright Martin Nowak 2012-2013. // the terms of the GNU General Public License as published by the Free
* License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). // Software Foundation; either version 3, or (at your option) any later
* Authors: Martin Nowak // version.
* Source: $(DRUNTIMESRC src/rt/_sections_android.d)
*/ // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
module rt.sections_android; // Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module gcc.sections.android;
version (CRuntime_Bionic): version (CRuntime_Bionic):
...@@ -69,6 +81,8 @@ void initSections() nothrow @nogc ...@@ -69,6 +81,8 @@ void initSections() nothrow @nogc
auto pbeg = cast(void*)&_tlsend; auto pbeg = cast(void*)&_tlsend;
auto pend = cast(void*)&__bss_end__; auto pend = cast(void*)&__bss_end__;
// _tlsend is a 32-bit int and may not be 64-bit void*-aligned, so align pbeg.
version (D_LP64) pbeg = cast(void*)(cast(size_t)(pbeg + 7) & ~cast(size_t)7);
_sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; _sections._gcRanges[0] = pbeg[0 .. pend - pbeg];
} }
...@@ -105,32 +119,14 @@ void scanTLSRanges(void[]* rng, scope void delegate(void* pbeg, void* pend) noth ...@@ -105,32 +119,14 @@ void scanTLSRanges(void[]* rng, scope void delegate(void* pbeg, void* pend) noth
* the corresponding address in the TLS dynamic per-thread data. * the corresponding address in the TLS dynamic per-thread data.
*/ */
version (X86) extern(C) void* __tls_get_addr( void* p ) nothrow @nogc
{ {
// NB: the compiler mangles this function as '___tls_get_addr' debug(PRINTF) printf(" __tls_get_addr input - %p\n", p);
// even though it is extern(D)
extern(D) void* ___tls_get_addr( void* p ) nothrow @nogc
{
debug(PRINTF) printf(" ___tls_get_addr input - %p\n", p);
immutable offset = cast(size_t)(p - cast(void*)&_tlsstart); immutable offset = cast(size_t)(p - cast(void*)&_tlsstart);
auto tls = getTLSBlockAlloc(); auto tls = getTLSBlockAlloc();
assert(offset < tls.length); assert(offset < tls.length);
return tls.ptr + offset; return tls.ptr + offset;
}
}
else version (ARM)
{
extern(C) void* __tls_get_addr( void** p ) nothrow @nogc
{
debug(PRINTF) printf(" __tls_get_addr input - %p\n", *p);
immutable offset = cast(size_t)(*p - cast(void*)&_tlsstart);
auto tls = getTLSBlockAlloc();
assert(offset < tls.length);
return tls.ptr + offset;
}
} }
else
static assert( false, "Android architecture not supported." );
private: private:
...@@ -182,7 +178,7 @@ extern(C) ...@@ -182,7 +178,7 @@ extern(C)
size_t __bss_end__; size_t __bss_end__;
void* _tlsstart; int _tlsstart;
void* _tlsend; int _tlsend;
} }
} }
/** // OSX-specific support for sections.
* Written in the D programming language. // Copyright (C) 2019 Free Software Foundation, Inc.
* This module provides OSX-specific support for sections.
* // GCC is free software; you can redistribute it and/or modify it under
* Copyright: Copyright Digital Mars 2008 - 2012. // the terms of the GNU General Public License as published by the Free
* License: Distributed under the // Software Foundation; either version 3, or (at your option) any later
* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). // version.
* (See accompanying file LICENSE)
* Authors: Walter Bright, Sean Kelly, Martin Nowak // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
* Source: $(DRUNTIMESRC src/rt/_sections_osx.d) // WARRANTY; without even the implied warranty of MERCHANTABILITY or
*/ // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
module rt.sections_osx; // You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module gcc.sections.osx;
version (OSX): version (OSX):
...@@ -35,22 +45,22 @@ struct SectionGroup ...@@ -35,22 +45,22 @@ struct SectionGroup
return dg(_sections); return dg(_sections);
} }
@property immutable(ModuleInfo*)[] modules() const @property immutable(ModuleInfo*)[] modules() const nothrow @nogc
{ {
return _moduleGroup.modules; return _moduleGroup.modules;
} }
@property ref inout(ModuleGroup) moduleGroup() inout @property ref inout(ModuleGroup) moduleGroup() inout nothrow @nogc
{ {
return _moduleGroup; return _moduleGroup;
} }
@property inout(void[])[] gcRanges() inout @property inout(void[])[] gcRanges() inout nothrow @nogc
{ {
return _gcRanges[]; return _gcRanges[];
} }
@property immutable(FuncTable)[] ehTables() const @property immutable(FuncTable)[] ehTables() const nothrow @nogc
{ {
return _ehTables[]; return _ehTables[];
} }
...@@ -70,7 +80,7 @@ __gshared bool _isRuntimeInitialized; ...@@ -70,7 +80,7 @@ __gshared bool _isRuntimeInitialized;
/**** /****
* Gets called on program startup just before GC is initialized. * Gets called on program startup just before GC is initialized.
*/ */
void initSections() void initSections() nothrow @nogc
{ {
pthread_key_create(&_tlsKey, null); pthread_key_create(&_tlsKey, null);
_dyld_register_func_for_add_image(&sections_osx_onAddImage); _dyld_register_func_for_add_image(&sections_osx_onAddImage);
...@@ -80,19 +90,19 @@ void initSections() ...@@ -80,19 +90,19 @@ void initSections()
/*** /***
* Gets called on program shutdown just after GC is terminated. * Gets called on program shutdown just after GC is terminated.
*/ */
void finiSections() void finiSections() nothrow @nogc
{ {
_sections._gcRanges.reset(); _sections._gcRanges.reset();
pthread_key_delete(_tlsKey); pthread_key_delete(_tlsKey);
_isRuntimeInitialized = false; _isRuntimeInitialized = false;
} }
void[]* initTLSRanges() void[]* initTLSRanges() nothrow @nogc
{ {
return &getTLSBlock(); return &getTLSBlock();
} }
void finiTLSRanges(void[]* rng) void finiTLSRanges(void[]* rng) nothrow @nogc
{ {
.free(rng.ptr); .free(rng.ptr);
.free(rng); .free(rng);
...@@ -148,7 +158,7 @@ body ...@@ -148,7 +158,7 @@ body
assert(0); assert(0);
} }
ref void[] getTLSBlock() ref void[] getTLSBlock() nothrow @nogc
{ {
auto pary = cast(void[]*)pthread_getspecific(_tlsKey); auto pary = cast(void[]*)pthread_getspecific(_tlsKey);
if (pary is null) if (pary is null)
...@@ -180,7 +190,6 @@ ref void[] getTLSBlockAlloc() ...@@ -180,7 +190,6 @@ ref void[] getTLSBlockAlloc()
return *pary; return *pary;
} }
__gshared SectionGroup _sections; __gshared SectionGroup _sections;
extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide) extern (C) void sections_osx_onAddImage(in mach_header* h, intptr_t slide)
...@@ -245,12 +254,10 @@ struct SegRef ...@@ -245,12 +254,10 @@ struct SegRef
string sect; string sect;
} }
static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA}, static immutable SegRef[] dataSegs = [{SEG_DATA, SECT_DATA},
{SEG_DATA, SECT_BSS}, {SEG_DATA, SECT_BSS},
{SEG_DATA, SECT_COMMON}]; {SEG_DATA, SECT_COMMON}];
ubyte[] getSection(in mach_header* header, intptr_t slide, ubyte[] getSection(in mach_header* header, intptr_t slide,
in char* segmentName, in char* sectionName) in char* segmentName, in char* sectionName)
{ {
......
// Run-time support for retrieving platform-specific sections.
// Copyright (C) 2019 Free Software Foundation, Inc.
// GCC is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 3, or (at your option) any later
// version.
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module gcc.sections;
version (CRuntime_Glibc)
public import gcc.sections.elf_shared;
else version (CRuntime_Musl)
public import gcc.sections.elf_shared;
else version (CRuntime_UClibc)
public import gcc.sections.elf_shared;
else version (FreeBSD)
public import gcc.sections.elf_shared;
else version (NetBSD)
public import gcc.sections.elf_shared;
else version (DragonFlyBSD)
public import gcc.sections.elf_shared;
else version (Solaris)
public import gcc.sections.solaris;
else version (OSX)
public import gcc.sections.osx;
else version (CRuntime_DigitalMars)
public import gcc.sections.win32;
else version (CRuntime_Microsoft)
public import gcc.sections.win64;
else version (CRuntime_Bionic)
public import gcc.sections.android;
else
static assert(0, "unimplemented");
/** // Solaris-specific support for sections.
* Written in the D programming language. // Copyright (C) 2019 Free Software Foundation, Inc.
* This module provides Solaris-specific support for sections.
* // GCC is free software; you can redistribute it and/or modify it under
* Copyright: Copyright Martin Nowak 2012-2013. // the terms of the GNU General Public License as published by the Free
* License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0). // Software Foundation; either version 3, or (at your option) any later
* Authors: Martin Nowak // version.
* Source: $(DRUNTIMESRC src/rt/_sections_solaris.d)
*/ // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module rt.sections_solaris; module gcc.sections.solaris;
version (Solaris): version (Solaris):
......
/** // Win32-specific support for sections.
* Written in the D programming language. // Copyright (C) 2019 Free Software Foundation, Inc.
* This module provides Win32-specific support for sections.
* // GCC is free software; you can redistribute it and/or modify it under
* Copyright: Copyright Digital Mars 2008 - 2012. // the terms of the GNU General Public License as published by the Free
* License: Distributed under the // Software Foundation; either version 3, or (at your option) any later
* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). // version.
* (See accompanying file LICENSE)
* Authors: Walter Bright, Sean Kelly, Martin Nowak // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
* Source: $(DRUNTIMESRC src/rt/_sections_win32.d) // WARRANTY; without even the implied warranty of MERCHANTABILITY or
*/ // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
module rt.sections_win32;
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module gcc.sections.win32;
version (CRuntime_DigitalMars): version (CRuntime_DigitalMars):
......
/** // Win64-specific support for sections.
* Written in the D programming language. // Copyright (C) 2019 Free Software Foundation, Inc.
* This module provides Win32-specific support for sections.
* // GCC is free software; you can redistribute it and/or modify it under
* Copyright: Copyright Digital Mars 2008 - 2012. // the terms of the GNU General Public License as published by the Free
* License: Distributed under the // Software Foundation; either version 3, or (at your option) any later
* $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). // version.
* (See accompanying file LICENSE)
* Authors: Walter Bright, Sean Kelly, Martin Nowak // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
* Source: $(DRUNTIMESRC src/rt/_sections_win64.d) // WARRANTY; without even the implied warranty of MERCHANTABILITY or
*/ // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
// <http://www.gnu.org/licenses/>.
module rt.sections_win64; module gcc.sections.win64;
version (CRuntime_Microsoft): version (CRuntime_Microsoft):
...@@ -271,7 +281,7 @@ struct IMAGE_NT_HEADERS ...@@ -271,7 +281,7 @@ struct IMAGE_NT_HEADERS
struct IMAGE_SECTION_HEADER struct IMAGE_SECTION_HEADER
{ {
char[8] Name; char[8] Name = 0;
union { union {
uint PhysicalAddress; uint PhysicalAddress;
uint VirtualSize; uint VirtualSize;
......
/**
* This module is used to detect copy relocated ModuleInfos (located in .bss section).
*
* Copyright: Copyright Martin Nowak 2014-.
* License: $(WEB www.boost.org/LICENSE_1_0.txt, Boost License 1.0).
* Authors: Martin Nowak
* Source: $(DRUNTIMESRC src/rt/_bss_section.c)
*/
/* These symbols are defined in the linker script and bracket the
* .bss, .lbss, .lrodata and .ldata sections.
*/
#if defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)
// Need to use weak linkage to workaround a bug in ld.bfd (Bugzilla 13025).
extern int __attribute__((weak)) __bss_start, _end;
__attribute__ ((visibility ("hidden"))) void* rt_get_bss_start();
__attribute__ ((visibility ("hidden"))) void* rt_get_end();
void* rt_get_bss_start() { return (void*)&__bss_start; }
void* rt_get_end() { return (void*)&_end; }
#endif
...@@ -8,6 +8,9 @@ ...@@ -8,6 +8,9 @@
* Source: $(DRUNTIMESRC src/rt/_sections.d) * Source: $(DRUNTIMESRC src/rt/_sections.d)
*/ */
/* NOTE: This file has been patched from the original DMD distribution to
* work with the GDC compiler.
*/
module rt.sections; module rt.sections;
version (OSX) version (OSX)
...@@ -19,7 +22,9 @@ else version (TVOS) ...@@ -19,7 +22,9 @@ else version (TVOS)
else version (WatchOS) else version (WatchOS)
version = Darwin; version = Darwin;
version (CRuntime_Glibc) version (GNU)
public import gcc.sections;
else version (CRuntime_Glibc)
public import rt.sections_elf_shared; public import rt.sections_elf_shared;
else version (FreeBSD) else version (FreeBSD)
public import rt.sections_elf_shared; public import rt.sections_elf_shared;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment