aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog4
-rwxr-xr-xwinsup/cygwin/speclib13
2 files changed, 17 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f3219d0..03a7ed5 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2003-08-20 Christopher Faylor <cgf@redhat.com>
+
+ * speclib: Fix created lib to avoid "File truncated" problems.
+
2003-08-20 Pierre Humblet <pierre.humblet@ieee.org>
* exceptions.cc (interrupt_setup): Set sigsave.sig last to avoid a
diff --git a/winsup/cygwin/speclib b/winsup/cygwin/speclib
index c686343..4a08ab7 100755
--- a/winsup/cygwin/speclib
+++ b/winsup/cygwin/speclib
@@ -37,3 +37,16 @@ else
fi
/bin/rm -f $lib
$ar crus $lib *.o
+export lib;
+perl -pi.bak -- - $lib << 'EOF'
+BEGIN {
+ binmode STDIN;
+ binmode STDOUT;
+ $lib = ($ENV{lib} =~ m!/([^/]+)$!o)[0] || $ENV{lib};
+ $lib =~ s/\.a//o;
+ my $pad = length('cygwin1_dll') - length($lib);
+ die "speclib: library name too long (" . length($lib) . ")\n" if $pad < 0;
+ $lib = "__head_$lib" . "\0" x $pad;
+}
+ s/__head_cygwin1_dll/$lib/g;
+'EOF'