* cygwin.sc: Make sure there's something in the cygheap.

* dllfixdbg: Accommodate newer binutils which put the gnu_debuglink at the end
rather than at the beginning.
This commit is contained in:
Christopher Faylor 2006-07-14 19:33:55 +00:00
parent 62f94a893e
commit ebc223f182
3 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2006-07-14 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Make sure there's something in the cygheap.
* dllfixdbg: Accommodate newer binutils which put the gnu_debuglink at
the end rather than at the beginning.
2006-07-13 Christopher Faylor <cgf@timesys.com> 2006-07-13 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (waitq_head): Don't initialize to zero. * sigproc.cc (waitq_head): Don't initialize to zero.

View File

@ -106,6 +106,7 @@ SECTIONS
{ {
__cygheap_mid = .; __cygheap_mid = .;
*(.cygheap) *(.cygheap)
. = . + 1;
. = ALIGN(512 * 1024); . = ALIGN(512 * 1024);
} }
__cygheap_end = ABSOLUTE(.); __cygheap_end = ABSOLUTE(.);

View File

@ -24,9 +24,10 @@ while (<OBJDUMP>) {
my ($idx, $name, $size, $vma, $lma, $fileoff, $algn) = /^\s*(\d+)\s+(\.\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/; my ($idx, $name, $size, $vma, $lma, $fileoff, $algn) = /^\s*(\d+)\s+(\.\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*$/;
if ($name eq '.gnu_debuglink') { if ($name eq '.gnu_debuglink') {
push(@objcopy, '--set-section-flag', '.gnu_debuglink=contents,readonly,debug,noload'); push(@objcopy, '--set-section-flag', '.gnu_debuglink=contents,readonly,debug,noload');
$idx = $section{'.gnu_debuglink'}{-idx} if defined($section{'.gnu_debuglink'}{-idx});
} elsif ($name eq '.gnu_debuglink_overlay') { } elsif ($name eq '.gnu_debuglink_overlay') {
push (@objcopy, '-R', '.gnu_debuglink_overlay'); push (@objcopy, '-R', '.gnu_debuglink_overlay');
$section{'.gnu_debuglink'}{-idx} = $idx if $section{'.gnu_debuglink'}; $section{'.gnu_debuglink'}{-idx} = $idx;
next; next;
} }
defined($idx) and defined($idx) and
@ -53,6 +54,7 @@ for my $k (sort {$section{$a}{-idx} <=> $section{$b}{-idx}} keys %section) {
} }
$vma = align($vma + $section{$k}{-size}, $section{$k}{-algn}); $vma = align($vma + $section{$k}{-size}, $section{$k}{-algn});
} }
warn "$0: ERROR final VMA (" . sprintf("0x%08x", $vma) . ") not on 64K boundary\n" if $vma != align($vma, 64 * 1024); warn "$0: ERROR final VMA (" . sprintf("0x%08x", $vma) . ") not on 64K boundary\n" if $vma != align($vma, 64 * 1024);
push(@objcopy, $dll, @ARGV); push(@objcopy, $dll, @ARGV);
xit 1, @objcopy; xit 1, @objcopy;