* Makefile.in: Warn when end of cygheap is not on 64k boundary.

* cygwin.sc: Try harder to ensure that cygheap is on a 64k boundary.  Move
cygheap to end of image to stop interference from unstripped debug regions.
This commit is contained in:
Christopher Faylor 2005-08-07 02:38:13 +00:00
parent 244f5a27a6
commit 82eaabf521
4 changed files with 40 additions and 24 deletions

View File

@ -1,3 +1,10 @@
2005-08-06 Christopher Faylor <cgf@timesys.com>
* Makefile.in: Warn when end of cygheap is not on 64k boundary.
* cygwin.sc: Try harder to ensure that cygheap is on a 64k boundary.
Move cygheap to end of image to stop interference from unstripped debug
regions.
2005-08-06 Christopher Faylor <cgf@timesys.com> 2005-08-06 Christopher Faylor <cgf@timesys.com>
* include/endian.h: Move everything into this file and define things * include/endian.h: Move everything into this file and define things

View File

@ -372,6 +372,12 @@ $(TEST_DLL_NAME): $(LDSCRIPT) $(DLL_OFILES) $(DLL_IMPORTS) $(LIBSERVER) $(LIBC)
-e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) version.o winver.o \ -e $(DLL_ENTRY) $(DEF_FILE) $(DLL_OFILES) version.o winver.o \
$(MALLOC_OBJ) $(LIBSERVER) $(LIBM) $(LIBC) \ $(MALLOC_OBJ) $(LIBSERVER) $(LIBM) $(LIBC) \
-lgcc $(DLL_IMPORTS) -lgcc $(DLL_IMPORTS)
@$(NM) $@ | perl -Minteger -n -e '/^(61[0-9a-f]+) A __cygheap_end/ and do {$$cygheap_end = $$1; exit;};\
END { \
die "ERROR: _cygheap_end not found in $@\n" unless defined($$cygheap_end); \
die "ERROR: _cygheap_end is not on a 64k boundary (0x$$cygheap_end)!\n" if (hex($$cygheap_end) & 0xffff);\
exit 0; \
}'
@ln -f $@ new-$(DLL_NAME) @ln -f $@ new-$(DLL_NAME)
# Rule to build libcygwin.a # Rule to build libcygwin.a

View File

@ -70,30 +70,6 @@ SECTIONS
{ {
*(.cygwin_dll_common) *(.cygwin_dll_common)
} }
.idata ALIGN(__section_alignment__) :
{
/* This cannot currently be handled with grouped sections.
See pe.em:sort_sections. */
SORT(*)(.idata$2)
SORT(*)(.idata$3)
/* These zeroes mark the end of the import list. */
LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
SORT(*)(.idata$4)
SORT(*)(.idata$5)
SORT(*)(.idata$6)
SORT(*)(.idata$7)
. = ALIGN(16);
__cygheap_start = ABSOLUTE(.);
}
.cygheap ALIGN(__section_alignment__):
{
__cygheap_mid = .;
*(.cygheap)
. = ALIGN(512 * 1024, 0x10000);
. += 8192; /* inexplicably needed for alignment on 64K boundary?!? */
}
__cygheap_end = ABSOLUTE(.);
__cygheap_end1 = __cygheap_mid + SIZEOF(.cygheap);
/DISCARD/ : /DISCARD/ :
{ {
*(.debug$S) *(.debug$S)
@ -122,4 +98,28 @@ SECTIONS
.debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) }
.debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) } .debug_macinfo ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_macinfo) }
.debug_ranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_ranges) } .debug_ranges ALIGN(__section_alignment__) (NOLOAD) : { *(.debug_ranges) }
.idata ALIGN(__section_alignment__) :
{
/* This cannot currently be handled with grouped sections.
See pe.em:sort_sections. */
SORT(*)(.idata$2)
SORT(*)(.idata$3)
/* These zeroes mark the end of the import list. */
LONG (0); LONG (0); LONG (0); LONG (0); LONG (0);
SORT(*)(.idata$4)
SORT(*)(.idata$5)
SORT(*)(.idata$6)
SORT(*)(.idata$7)
. = ALIGN(16);
__cygheap_start = ABSOLUTE(.);
. = ALIGN(0x10000);
}
.cygheap ALIGN(__section_alignment__) :
{
__cygheap_mid = .;
*(.cygheap)
. = ALIGN(512 * 1024, 0x10000);
}
__cygheap_end = ABSOLUTE(.);
__cygheap_end1 = __cygheap_mid + SIZEOF(.cygheap);
} }

View File

@ -725,6 +725,9 @@ dll_crt0_1 (char *)
check_sanity_and_sync (user_data); check_sanity_and_sync (user_data);
malloc_init (); malloc_init ();
int i = 0;
while (i)
cmalloc (HEAP_STR, 2000000);
/* Initialize SIGSEGV handling, etc. */ /* Initialize SIGSEGV handling, etc. */
init_exceptions (&cygwin_except_entry); init_exceptions (&cygwin_except_entry);