Merge branch 'kernel-update' of ssh://git.ipfire.org/pub/git/ipfire-2.x into kernel-update

This commit is contained in:
Arne Fitzenreiter
2012-08-28 08:30:12 -04:00
525 changed files with 139757 additions and 20579 deletions

View File

@@ -19,7 +19,7 @@ all: $(LIB)
$(CC) $(CFLAGS) -o $@ -c $<
$(LIB): $(OBJECTS)
$(CC) $(CFLAGS) -shared -o $@ $? -ldl
$(CC) $(CFLAGS) -shared -o $@ $? -ldl -static-libgcc
.PHONY: install
install: all

View File

@@ -21,10 +21,10 @@
CC = gcc
CFLAGS = -Os -Wall
INCLUDE = -I/opt/i586-uClibc/include
INCLUDE =
LD = gcc
LDFLAGS = -L/install/lib
LDFLAGS =
LIBS = -lnewt -lslang -lpci
COMPILE = $(CC) -c $(INCLUDE) $(CFLAGS)

View File

@@ -510,6 +510,15 @@ int main(int argc, char *argv[])
system("/bin/sed -e 's#/harddisk#/#g' -e 's#//#/#g' < /proc/mounts > /harddisk/etc/mtab");
/*
* Generate device.map to help grub finding the device to install itself on.
*/
FILE *f = NULL;
if (f = fopen("/harddisk/boot/grub/device.map", "w")) {
fprintf(f, "(hd0) %s\n", hdparams.devnode_part);
fclose(f);
}
snprintf(commandstring, STRING_SIZE,
"/usr/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk);
if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) {

View File

@@ -23,7 +23,7 @@ echo "Scanning for possible destination drives"
# scan sd?
echo "--> sd?"
for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -exec basename {} \; | sort | uniq`
for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -or -name vd* -exec basename {} \; | sort | uniq`
do
if [ "$(grep ${DEVICE} /proc/partitions)" = "" ]; then
umount /harddisk 2> /dev/null

View File

@@ -20,7 +20,7 @@
CC = gcc
CFLAGS = -O2 -Wall
INCLUDE = -I/opt/i586-uClibc/include
INCLUDE =
LD = ld
LDFLAGS = -i

View File

@@ -29,7 +29,7 @@ SUID_PROGS = setdmzholes setportfw setxtaccess \
ipsecctrl timectrl dhcpctrl snortctrl \
applejuicectrl rebuildhosts backupctrl \
logwatch openvpnctrl outgoingfwctrl \
wirelessctrl getipstat getiptstate qosctrl launch-ether-wake \
wirelessctrl getipstat qosctrl launch-ether-wake \
redctrl syslogdctrl extrahdctrl sambactrl upnpctrl tripwirectrl \
smartctrl clamavctrl addonctrl pakfire mpfirectrl wlanapctrl \
setaliases urlfilterctrl updxlratorctrl fireinfoctrl rebuildroutes \

View File

@@ -1,24 +0,0 @@
/* IPFire helper program - IPStat
*
* Get the list from IPTABLES -L
*
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <fcntl.h>
#include "setuid.h"
int main(void)
{
if (!(initsetuid()))
exit(1);
safe_system("/usr/sbin/iptstate -1rbt");
return 0;
}

View File

@@ -1,30 +0,0 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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. #
# #
# You should have received a copy of the GNU General Public License #
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
extract_files
sleep 60 && /etc/init.d/applejuice start &
ln -svf ../init.d/applejuice /etc/rc.d/rc0.d/K05applejuice
ln -svf ../init.d/applejuice /etc/rc.d/rc3.d/S98applejuice
ln -svf ../init.d/applejuice /etc/rc.d/rc6.d/K05applejuice
/etc/init.d/apache reload

View File

@@ -1,27 +0,0 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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. #
# #
# You should have received a copy of the GNU General Public License #
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
/etc/init.d/applejuice stop
remove_files
rm -rf /etc/rc.d/rc*.d/*applejuice

View File

@@ -1,26 +0,0 @@
#!/bin/bash
############################################################################
# #
# This file is part of the IPFire Firewall. #
# #
# IPFire 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 2 of the License, or #
# (at your option) any later version. #
# #
# IPFire 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. #
# #
# You should have received a copy of the GNU General Public License #
# along with IPFire; if not, write to the Free Software #
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
# Copyright (C) 2007 IPFire-Team <info@ipfire.org>. #
# #
############################################################################
#
. /opt/pakfire/lib/functions.sh
./uninstall.sh
./install.sh

View File

@@ -0,0 +1,17 @@
diff -up apcupsd-3.14.5/src/apcaccess.c.gcc44 apcupsd-3.14.5/src/apcaccess.c
--- apcupsd-3.14.5/src/apcaccess.c.gcc44 2009-02-24 10:36:35.781325750 +0100
+++ apcupsd-3.14.5/src/apcaccess.c 2009-02-24 10:38:12.416285478 +0100
@@ -86,10 +86,10 @@ int main(int argc, char **argv)
}
if (argc > 2) { /* assume host:port */
- char *p;
+ char *p = argv[2];
- host = argv[2];
- p = strchr(host, ':');
+ host = p;
+ p = strchr(p, ':');
if (p) {
*p++ = 0;
port = atoi(p);

View File

@@ -1,723 +0,0 @@
Submitted By: Jeremy Huntwork (jhuntwork at linuxfromscratch dot org)
Date: 2006-04-11
Initial Package Version: 3.1
Origin: http://ftp.gnu.org/gnu/bash/bash-3.1-patches/
Upstream Status: From Upstream
Description: Contains patches 001-017 from upstream
diff -Naur bash-3.1.orig/arrayfunc.c bash-3.1/arrayfunc.c
--- bash-3.1.orig/arrayfunc.c 2005-07-04 17:25:58.000000000 -0700
+++ bash-3.1/arrayfunc.c 2006-04-19 15:59:29.000000000 -0700
@@ -592,11 +592,7 @@
exp = (char *)xmalloc (len);
strncpy (exp, s, len - 1);
exp[len - 1] = '\0';
-#if 0
- t = expand_string_to_string (exp, 0);
-#else
- t = expand_string_to_string (exp, Q_DOUBLE_QUOTES);
-#endif
+ t = expand_arith_string (exp, 0);
this_command_name = (char *)NULL;
val = evalexp (t, &expok);
free (t);
diff -Naur bash-3.1.orig/doc/bash.1 bash-3.1/doc/bash.1
--- bash-3.1.orig/doc/bash.1 2005-10-12 08:40:52.000000000 -0700
+++ bash-3.1/doc/bash.1 2006-04-19 15:58:34.000000000 -0700
@@ -6,12 +6,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
-.\" Last Change: Sat Aug 27 13:28:44 EDT 2005
+.\" Last Change: Wed Dec 28 19:58:45 EST 2005
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2005 Aug 27" "GNU Bash-3.1-beta1"
+.TH BASH 1 "2005 Dec 28" "GNU Bash-3.1"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -677,8 +677,8 @@
.B nocasematch
is enabled, the match is performed without regard to the case
of alphabetic characters.
-The return value is 0 if the string matches or does not match
-the pattern, respectively, and 1 otherwise.
+The return value is 0 if the string matches (\fB==\fP) or does not match
+(\fB!=\fP) the pattern, and 1 otherwise.
Any part of the pattern may be quoted to force it to be matched as a
string.
.if t .sp 0.5
@@ -807,6 +807,12 @@
as for pathname expansion (see
.B Pathname Expansion
below).
+The \fIword\fP is expanded using tilde
+expansion, parameter and variable expansion, arithmetic substituion,
+command substitution, process substitution and quote removal.
+Each \fIpattern\fP examined is expanded using tilde
+expansion, parameter and variable expansion, arithmetic substituion,
+command substitution, and process substitution.
If the shell option
.B nocasematch
is enabled, the match is performed without regard to the case
@@ -8484,7 +8490,7 @@
returns true if any of the arguments are found, false if
none are found.
.TP
-\fBulimit\fP [\fB\-SHacdflmnpstuv\fP [\fIlimit\fP]]
+\fBulimit\fP [\fB\-SHacdfilmnpqstuvx\fP [\fIlimit\fP]]
Provides control over the resources available to the shell and to
processes started by it, on systems that allow such control.
The \fB\-H\fP and \fB\-S\fP options specify that the hard or soft limit is
@@ -8523,6 +8529,9 @@
.B \-f
The maximum size of files created by the shell
.TP
+.B \-i
+The maximum number of pending signals
+.TP
.B \-l
The maximum size that may be locked into memory
.TP
@@ -8536,6 +8545,9 @@
.B \-p
The pipe size in 512-byte blocks (this may not be set)
.TP
+.B \-q
+The maximum number of bytes in POSIX message queues
+.TP
.B \-s
The maximum stack size
.TP
@@ -8547,6 +8559,9 @@
.TP
.B \-v
The maximum amount of virtual memory available to the shell
+.TP
+.B \-x
+The maximum number of file locks
.PD
.PP
If
diff -Naur bash-3.1.orig/doc/bashref.texi bash-3.1/doc/bashref.texi
--- bash-3.1.orig/doc/bashref.texi 2005-10-03 12:07:21.000000000 -0700
+++ bash-3.1/doc/bashref.texi 2006-04-19 15:58:34.000000000 -0700
@@ -961,8 +961,8 @@
(see the description of @code{shopt} in @ref{Bash Builtins})
is enabled, the match is performed without regard to the case
of alphabetic characters.
-The return value is 0 if the string matches or does not match
-the pattern, respectively, and 1 otherwise.
+The return value is 0 if the string matches (@samp{==}) or does not
+match (@samp{!=})the pattern, and 1 otherwise.
Any part of the pattern may be quoted to force it to be matched as a
string.
@@ -2598,7 +2598,7 @@
Builtin commands are necessary to implement functionality impossible
or inconvenient to obtain with separate utilities.
-This section briefly the builtins which Bash inherits from
+This section briefly describes the builtins which Bash inherits from
the Bourne Shell, as well as the builtin commands which are unique
to or have been extended in Bash.
@@ -3833,7 +3833,7 @@
@item ulimit
@btindex ulimit
@example
-ulimit [-acdflmnpstuvSH] [@var{limit}]
+ulimit [-acdfilmnpqstuvxSH] [@var{limit}]
@end example
@code{ulimit} provides control over the resources available to processes
started by the shell, on systems that allow such control. If an
@@ -3857,6 +3857,9 @@
@item -f
The maximum size of files created by the shell.
+@item -i
+The maximum number of pending signals.
+
@item -l
The maximum size that may be locked into memory.
@@ -3869,6 +3872,9 @@
@item -p
The pipe buffer size.
+@item -q
+The maximum number of bytes in POSIX message queues.
+
@item -s
The maximum stack size.
@@ -3881,6 +3887,9 @@
@item -v
The maximum amount of virtual memory available to the process.
+@item -x
+The maximum number of file locks.
+
@end table
If @var{limit} is given, it is the new value of the specified resource;
@@ -4089,8 +4098,8 @@
Print shell input lines as they are read.
@item -x
-Print a trace of simple commands, \fBfor\fP commands, \fBcase\fP
-commands, \fBselect\fP commands, and arithmetic \fBfor\fP commands
+Print a trace of simple commands, @code{for} commands, @code{case}
+commands, @code{select} commands, and arithmetic @code{for} commands
and their arguments or associated word lists after they are
expanded and before they are executed. The value of the @env{PS4}
variable is expanded and the resultant value is printed before
diff -Naur bash-3.1.orig/doc/version.texi bash-3.1/doc/version.texi
--- bash-3.1.orig/doc/version.texi 2005-09-20 11:52:56.000000000 -0700
+++ bash-3.1/doc/version.texi 2006-04-19 15:58:34.000000000 -0700
@@ -2,9 +2,9 @@
Copyright (C) 1988-2005 Free Software Foundation, Inc.
@end ignore
-@set LASTCHANGE Mon Sep 5 11:47:04 EDT 2005
+@set LASTCHANGE Fri Dec 30 10:50:51 EST 2005
-@set EDITION 3.1-beta1
-@set VERSION 3.1-beta1
-@set UPDATED 5 September 2005
-@set UPDATED-MONTH September 2005
+@set EDITION 3.1
+@set VERSION 3.1
+@set UPDATED 30 December 2005
+@set UPDATED-MONTH December 2005
diff -Naur bash-3.1.orig/jobs.c bash-3.1/jobs.c
--- bash-3.1.orig/jobs.c 2005-11-11 20:13:27.000000000 -0800
+++ bash-3.1/jobs.c 2006-04-19 15:58:34.000000000 -0700
@@ -619,8 +619,11 @@
* once in the parent and once in each child. This is where
* the parent gives it away.
*
+ * Don't give the terminal away if this shell is an asynchronous
+ * subshell.
+ *
*/
- if (job_control && newjob->pgrp)
+ if (job_control && newjob->pgrp && (subshell_environment&SUBSHELL_ASYNC) == 0)
give_terminal_to (newjob->pgrp, 0);
}
}
@@ -844,9 +847,10 @@
realloc_jobs_list ()
{
sigset_t set, oset;
- int nsize, i, j;
+ int nsize, i, j, ncur, nprev;
JOB **nlist;
+ ncur = nprev = NO_JOB;
nsize = ((js.j_njobs + JOB_SLOTS - 1) / JOB_SLOTS);
nsize *= JOB_SLOTS;
i = js.j_njobs % JOB_SLOTS;
@@ -854,17 +858,51 @@
nsize += JOB_SLOTS;
BLOCK_CHILD (set, oset);
- nlist = (JOB **) xmalloc (nsize * sizeof (JOB *));
+ nlist = (js.j_jobslots == nsize) ? jobs : (JOB **) xmalloc (nsize * sizeof (JOB *));
+
for (i = j = 0; i < js.j_jobslots; i++)
if (jobs[i])
- nlist[j++] = jobs[i];
+ {
+ if (i == js.j_current)
+ ncur = j;
+ if (i == js.j_previous)
+ nprev = j;
+ nlist[j++] = jobs[i];
+ }
+
+#if defined (DEBUG)
+ itrace ("realloc_jobs_list: resize jobs list from %d to %d", js.j_jobslots, nsize);
+ itrace ("realloc_jobs_list: j_lastj changed from %d to %d", js.j_lastj, (j > 0) ? j - 1 : 0);
+ itrace ("realloc_jobs_list: j_njobs changed from %d to %d", js.j_njobs, (j > 0) ? j - 1 : 0);
+#endif
js.j_firstj = 0;
- js.j_lastj = (j > 0) ? j - 1: 0;
+ js.j_lastj = (j > 0) ? j - 1 : 0;
+ js.j_njobs = j;
js.j_jobslots = nsize;
- free (jobs);
- jobs = nlist;
+ /* Zero out remaining slots in new jobs list */
+ for ( ; j < nsize; j++)
+ nlist[j] = (JOB *)NULL;
+
+ if (jobs != nlist)
+ {
+ free (jobs);
+ jobs = nlist;
+ }
+
+ if (ncur != NO_JOB)
+ js.j_current = ncur;
+ if (nprev != NO_JOB)
+ js.j_previous = nprev;
+
+ /* Need to reset these */
+ if (js.j_current == NO_JOB || js.j_previous == NO_JOB || js.j_current > js.j_lastj || js.j_previous > js.j_lastj)
+ reset_current ();
+
+#ifdef DEBUG
+ itrace ("realloc_jobs_list: reset js.j_current (%d) and js.j_previous (%d)", js.j_current, js.j_previous);
+#endif
UNBLOCK_CHILD (oset);
}
@@ -1655,7 +1693,7 @@
In this case, we don't want to give the terminal to the
shell's process group (we could be in the middle of a
pipeline, for example). */
- if (async_p == 0 && pipeline_pgrp != shell_pgrp)
+ if (async_p == 0 && pipeline_pgrp != shell_pgrp && ((subshell_environment&SUBSHELL_ASYNC) == 0))
give_terminal_to (pipeline_pgrp, 0);
#if defined (PGRP_PIPE)
@@ -2198,7 +2236,11 @@
/* This is possibly a race condition -- should it go in stop_pipeline? */
wait_sigint_received = 0;
if (job_control == 0)
- old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+ {
+ old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+ if (old_sigint_handler == SIG_IGN)
+ set_signal_handler (SIGINT, old_sigint_handler);
+ }
termination_state = last_command_exit_value;
diff -Naur bash-3.1.orig/lib/glob/glob.c bash-3.1/lib/glob/glob.c
--- bash-3.1.orig/lib/glob/glob.c 2005-03-24 09:42:27.000000000 -0800
+++ bash-3.1/lib/glob/glob.c 2006-04-19 15:58:34.000000000 -0700
@@ -360,6 +360,7 @@
count = lose = skip = 0;
firstmalloc = 0;
+ nalloca = 0;
/* If PAT is empty, skip the loop, but return one (empty) filename. */
if (pat == 0 || *pat == '\0')
@@ -546,6 +547,8 @@
firstmalloc = 0;
tmplink = lastlink;
}
+ else
+ tmplink = 0;
free (lastlink->name);
lastlink = lastlink->next;
FREE (tmplink);
diff -Naur bash-3.1.orig/lib/glob/sm_loop.c bash-3.1/lib/glob/sm_loop.c
--- bash-3.1.orig/lib/glob/sm_loop.c 2005-10-16 18:21:04.000000000 -0700
+++ bash-3.1/lib/glob/sm_loop.c 2006-04-19 15:58:34.000000000 -0700
@@ -638,12 +638,13 @@
CHAR *psub; /* pointer to sub-pattern */
CHAR *pnext; /* pointer to next sub-pattern */
CHAR *srest; /* pointer to rest of string */
- int m1, m2;
+ int m1, m2, xflags; /* xflags = flags passed to recursive matches */
#if DEBUG_MATCHING
fprintf(stderr, "extmatch: xc = %c\n", xc);
fprintf(stderr, "extmatch: s = %s; se = %s\n", s, se);
fprintf(stderr, "extmatch: p = %s; pe = %s\n", p, pe);
+fprintf(stderr, "extmatch: flags = %d\n", flags);
#endif
prest = PATSCAN (p + (*p == L('(')), pe, 0); /* ) */
@@ -677,8 +678,12 @@
string matches the rest of the pattern. Also handle
multiple matches of the pattern. */
if (m1)
- m2 = (GMATCH (srest, se, prest, pe, flags) == 0) ||
- (s != srest && GMATCH (srest, se, p - 1, pe, flags) == 0);
+ {
+ /* if srest > s, we are not at start of string */
+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ m2 = (GMATCH (srest, se, prest, pe, xflags) == 0) ||
+ (s != srest && GMATCH (srest, se, p - 1, pe, xflags) == 0);
+ }
if (m1 && m2)
return (0);
}
@@ -704,8 +709,10 @@
srest = (prest == pe) ? se : s;
for ( ; srest <= se; srest++)
{
+ /* if srest > s, we are not at start of string */
+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
if (GMATCH (s, srest, psub, pnext - 1, flags) == 0 &&
- GMATCH (srest, se, prest, pe, flags) == 0)
+ GMATCH (srest, se, prest, pe, xflags) == 0)
return (0);
}
if (pnext == prest)
@@ -726,7 +733,9 @@
if (pnext == prest)
break;
}
- if (m1 == 0 && GMATCH (srest, se, prest, pe, flags) == 0)
+ /* if srest > s, we are not at start of string */
+ xflags = (srest > s) ? (flags & ~FNM_PERIOD) : flags;
+ if (m1 == 0 && GMATCH (srest, se, prest, pe, xflags) == 0)
return (0);
}
return (FNM_NOMATCH);
diff -Naur bash-3.1.orig/lib/readline/display.c bash-3.1/lib/readline/display.c
--- bash-3.1.orig/lib/readline/display.c 2005-11-30 11:05:02.000000000 -0800
+++ bash-3.1/lib/readline/display.c 2006-04-19 15:58:34.000000000 -0700
@@ -1983,11 +1983,15 @@
int pchar;
{
int len;
- char *pmt;
+ char *pmt, *p;
rl_save_prompt ();
- if (saved_local_prompt == 0)
+ /* We've saved the prompt, and can do anything with the various prompt
+ strings we need before they're restored. We want the unexpanded
+ portion of the prompt string after any final newline. */
+ p = rl_prompt ? strrchr (rl_prompt, '\n') : 0;
+ if (p == 0)
{
len = (rl_prompt && *rl_prompt) ? strlen (rl_prompt) : 0;
pmt = (char *)xmalloc (len + 2);
@@ -1998,19 +2002,17 @@
}
else
{
- len = *saved_local_prompt ? strlen (saved_local_prompt) : 0;
+ p++;
+ len = strlen (p);
pmt = (char *)xmalloc (len + 2);
if (len)
- strcpy (pmt, saved_local_prompt);
+ strcpy (pmt, p);
pmt[len] = pchar;
pmt[len+1] = '\0';
- local_prompt = savestring (pmt);
- prompt_last_invisible = saved_last_invisible;
- prompt_visible_length = saved_visible_length + 1;
- }
+ }
+ /* will be overwritten by expand_prompt, called from rl_message */
prompt_physical_chars = saved_physical_chars + 1;
-
return pmt;
}
diff -Naur bash-3.1.orig/lib/readline/readline.c bash-3.1/lib/readline/readline.c
--- bash-3.1.orig/lib/readline/readline.c 2005-07-04 19:29:35.000000000 -0700
+++ bash-3.1/lib/readline/readline.c 2006-04-19 15:58:34.000000000 -0700
@@ -282,6 +282,7 @@
{
FREE (rl_prompt);
rl_prompt = prompt ? savestring (prompt) : (char *)NULL;
+ rl_display_prompt = rl_prompt ? rl_prompt : "";
rl_visible_prompt_length = rl_expand_prompt (rl_prompt);
return 0;
diff -Naur bash-3.1.orig/lib/readline/terminal.c bash-3.1/lib/readline/terminal.c
--- bash-3.1.orig/lib/readline/terminal.c 2005-11-12 17:46:54.000000000 -0800
+++ bash-3.1/lib/readline/terminal.c 2006-04-19 15:58:34.000000000 -0700
@@ -122,7 +122,7 @@
static char *_rl_visible_bell;
/* Non-zero means the terminal can auto-wrap lines. */
-int _rl_term_autowrap;
+int _rl_term_autowrap = -1;
/* Non-zero means that this terminal has a meta key. */
static int term_has_meta;
@@ -274,6 +274,9 @@
_rl_set_screen_size (rows, cols)
int rows, cols;
{
+ if (_rl_term_autowrap == -1)
+ _rl_init_terminal_io (rl_terminal_name);
+
if (rows > 0)
_rl_screenheight = rows;
if (cols > 0)
diff -Naur bash-3.1.orig/parse.y bash-3.1/parse.y
--- bash-3.1.orig/parse.y 2005-11-11 20:14:18.000000000 -0800
+++ bash-3.1/parse.y 2006-04-19 15:58:34.000000000 -0700
@@ -2716,6 +2716,7 @@
#define P_ALLOWESC 0x02
#define P_DQUOTE 0x04
#define P_COMMAND 0x08 /* parsing a command, so look for comments */
+#define P_BACKQUOTE 0x10 /* parsing a backquoted command substitution */
static char matched_pair_error;
static char *
@@ -2725,12 +2726,12 @@
int *lenp, flags;
{
int count, ch, was_dollar, in_comment, check_comment;
- int pass_next_character, nestlen, ttranslen, start_lineno;
+ int pass_next_character, backq_backslash, nestlen, ttranslen, start_lineno;
char *ret, *nestret, *ttrans;
int retind, retsize, rflags;
count = 1;
- pass_next_character = was_dollar = in_comment = 0;
+ pass_next_character = backq_backslash = was_dollar = in_comment = 0;
check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
/* RFLAGS is the set of flags we want to pass to recursive calls. */
@@ -2742,11 +2743,8 @@
start_lineno = line_number;
while (count)
{
-#if 0
- ch = shell_getc ((qc != '\'' || (flags & P_ALLOWESC)) && pass_next_character == 0);
-#else
- ch = shell_getc (qc != '\'' && pass_next_character == 0);
-#endif
+ ch = shell_getc (qc != '\'' && pass_next_character == 0 && backq_backslash == 0);
+
if (ch == EOF)
{
free (ret);
@@ -2771,9 +2769,16 @@
continue;
}
/* Not exactly right yet */
- else if (check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind -1])))
+ else if MBTEST(check_comment && in_comment == 0 && ch == '#' && (retind == 0 || ret[retind-1] == '\n' || whitespace (ret[retind - 1])))
in_comment = 1;
+ /* last char was backslash inside backquoted command substitution */
+ if (backq_backslash)
+ {
+ backq_backslash = 0;
+ /* Placeholder for adding special characters */
+ }
+
if (pass_next_character) /* last char was backslash */
{
pass_next_character = 0;
@@ -2814,6 +2819,8 @@
{
if MBTEST((flags & P_ALLOWESC) && ch == '\\')
pass_next_character++;
+ else if MBTEST((flags & P_BACKQUOTE) && ch == '\\')
+ backq_backslash++;
continue;
}
@@ -2898,7 +2905,11 @@
}
else if MBTEST(qc == '`' && (ch == '"' || ch == '\'') && in_comment == 0)
{
- nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags);
+ /* Add P_BACKQUOTE so backslash quotes the next character and
+ shell_getc does the right thing with \<newline>. We do this for
+ a measure of backwards compatibility -- it's not strictly the
+ right POSIX thing. */
+ nestret = parse_matched_pair (0, ch, ch, &nestlen, rflags|P_BACKQUOTE);
goto add_nestret;
}
else if MBTEST(was_dollar && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
@@ -2907,7 +2918,7 @@
if (open == ch) /* undo previous increment */
count--;
if (ch == '(') /* ) */
- nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags);
+ nestret = parse_matched_pair (0, '(', ')', &nestlen, rflags & ~P_DQUOTE);
else if (ch == '{') /* } */
nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|rflags);
else if (ch == '[') /* ] */
@@ -3578,7 +3589,7 @@
FREE (ttok);
all_digit_token = 0;
compound_assignment = 1;
-#if 0
+#if 1
goto next_character;
#else
goto got_token; /* ksh93 seems to do this */
@@ -3695,7 +3706,9 @@
struct builtin *b;
b = builtin_address_internal (token, 0);
if (b && (b->flags & ASSIGNMENT_BUILTIN))
- parser_state |= PST_ASSIGNOK;
+ parser_state |= PST_ASSIGNOK;
+ else if (STREQ (token, "eval") || STREQ (token, "let"))
+ parser_state |= PST_ASSIGNOK;
}
yylval.word = the_word;
@@ -4686,18 +4699,21 @@
int *retlenp;
{
WORD_LIST *wl, *rl;
- int tok, orig_line_number, orig_token_size;
+ int tok, orig_line_number, orig_token_size, orig_last_token, assignok;
char *saved_token, *ret;
saved_token = token;
orig_token_size = token_buffer_size;
orig_line_number = line_number;
+ orig_last_token = last_read_token;
last_read_token = WORD; /* WORD to allow reserved words here */
token = (char *)NULL;
token_buffer_size = 0;
+ assignok = parser_state&PST_ASSIGNOK; /* XXX */
+
wl = (WORD_LIST *)NULL; /* ( */
parser_state |= PST_COMPASSIGN;
@@ -4740,7 +4756,7 @@
jump_to_top_level (DISCARD);
}
- last_read_token = WORD;
+ last_read_token = orig_last_token; /* XXX - was WORD? */
if (wl)
{
rl = REVERSE_LIST (wl, WORD_LIST *);
@@ -4752,6 +4768,10 @@
if (retlenp)
*retlenp = (ret && *ret) ? strlen (ret) : 0;
+
+ if (assignok)
+ parser_state |= PST_ASSIGNOK;
+
return ret;
}
diff -Naur bash-3.1.orig/patchlevel.h bash-3.1/patchlevel.h
--- bash-3.1.orig/patchlevel.h 2005-07-20 10:58:20.000000000 -0700
+++ bash-3.1/patchlevel.h 2006-04-19 15:59:29.000000000 -0700
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 0
+#define PATCHLEVEL 17
#endif /* _PATCHLEVEL_H_ */
diff -Naur bash-3.1.orig/subst.c bash-3.1/subst.c
--- bash-3.1.orig/subst.c 2005-10-24 06:51:13.000000000 -0700
+++ bash-3.1/subst.c 2006-04-19 15:59:29.000000000 -0700
@@ -2187,7 +2187,7 @@
if (mklocal && variable_context)
{
v = find_variable (name);
- if (v == 0 || array_p (v) == 0)
+ if (v == 0 || array_p (v) == 0 || v->context != variable_context)
v = make_local_array_variable (name);
v = assign_array_var_from_string (v, value, flags);
}
@@ -2575,6 +2575,13 @@
return (expand_string_to_string_internal (string, quoted, expand_string_assignment));
}
+char *
+expand_arith_string (string, quoted)
+ char *string;
+{
+ return (expand_string_if_necessary (string, quoted, expand_string));
+}
+
#if defined (COND_COMMAND)
/* Just remove backslashes in STRING. Returns a new string. */
char *
@@ -5248,7 +5255,7 @@
else
t = (char *)0;
- temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
+ temp1 = expand_arith_string (substr, Q_DOUBLE_QUOTES);
*e1p = evalexp (temp1, &expok);
free (temp1);
if (expok == 0)
@@ -5293,7 +5300,7 @@
{
t++;
temp2 = savestring (t);
- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
free (temp2);
t[-1] = ':';
*e2p = evalexp (temp1, &expok);
@@ -6435,7 +6442,7 @@
temp2[t_index] = '\0';
/* Expand variables found inside the expression. */
- temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+ temp1 = expand_arith_string (temp2, Q_DOUBLE_QUOTES);
free (temp2);
arithsub:
@@ -6477,7 +6484,7 @@
zindex = t_index;
/* Do initial variable expansion. */
- temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
+ temp1 = expand_arith_string (temp, Q_DOUBLE_QUOTES);
goto arithsub;
@@ -6795,6 +6802,12 @@
if (temp && *temp && t_index > 0)
{
temp1 = bash_tilde_expand (temp, tflag);
+ if (temp1 && *temp1 == '~' && STREQ (temp, temp1))
+ {
+ FREE (temp);
+ FREE (temp1);
+ goto add_character; /* tilde expansion failed */
+ }
free (temp);
temp = temp1;
sindex += t_index;
diff -Naur bash-3.1.orig/subst.h bash-3.1/subst.h
--- bash-3.1.orig/subst.h 2004-11-07 12:12:28.000000000 -0800
+++ bash-3.1/subst.h 2006-04-19 15:59:29.000000000 -0700
@@ -151,6 +151,9 @@
extern char *expand_string_unsplit_to_string __P((char *, int));
extern char *expand_assignment_string_to_string __P((char *, int));
+/* Expand an arithmetic expression string */
+extern char *expand_arith_string __P((char *, int));
+
/* De-quoted quoted characters in STRING. */
extern char *dequote_string __P((char *));
diff -Naur bash-3.1.orig/variables.c bash-3.1/variables.c
--- bash-3.1.orig/variables.c 2005-11-12 18:22:37.000000000 -0800
+++ bash-3.1/variables.c 2006-04-19 15:58:34.000000000 -0700
@@ -860,9 +860,11 @@
{
char val[INT_STRLEN_BOUND(int) + 1], *v;
+#if defined (READLINE)
/* If we are currently assigning to LINES or COLUMNS, don't do anything. */
if (winsize_assignment)
return;
+#endif
v = inttostr (lines, val, sizeof (val));
bind_variable ("LINES", v, 0);

View File

@@ -1,15 +0,0 @@
--- bash-3.1/shell.c.login 2006-01-13 16:52:14.000000000 +0000
+++ bash-3.1/shell.c 2006-01-13 16:52:15.000000000 +0000
@@ -1543,9 +1543,10 @@
any startup files; just try to be more like /bin/sh. */
shell_name = argv0 ? base_pathname (argv0) : PROGRAM;
- if (*shell_name == '-')
+ if (argv0 && *argv0 == '-')
{
- shell_name++;
+ if (*shell_name == '-')
+ shell_name++;
login_shell++;
}

View File

@@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-001
Bug-Reported-by: Greg Schafer <gschafer@zip.com.au>
Bug-Reference-ID: <20061012084940.GA15768@tigers.local>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00046.html
Bug-Description:
When using historical ``-style command substitution, bash incorrectly attempts
to interpret shell comments while scanning for the closing backquote.
Patch:
*** ../bash-3.2/parse.y Tue Sep 19 16:37:21 2006
--- parse.y Thu Oct 12 10:30:57 2006
***************
*** 2736,2740 ****
count = 1;
pass_next_character = backq_backslash = was_dollar = in_comment = 0;
! check_comment = (flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
/* RFLAGS is the set of flags we want to pass to recursive calls. */
--- 2736,2740 ----
count = 1;
pass_next_character = backq_backslash = was_dollar = in_comment = 0;
! check_comment = (flags & P_COMMAND) && qc != '`' && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0;
/* RFLAGS is the set of flags we want to pass to recursive calls. */
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 0
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 1
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,48 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-002
Bug-Reported-by: Jim Gifford <jim@jg555.com>
Bug-Reference-ID: <12j2pc3aq35mb04@corp.supernews.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00082.html
Bug-Description:
An incorrect encoding specification in the Content-Type header causes msgfmt
to fail, which causes `make install' to fail.
Patch:
*** ../bash-3.2/po/ru.po Tue Jan 10 17:51:03 2006
--- po/ru.po Mon Oct 16 15:13:23 2006
***************
*** 13,17 ****
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
! "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
--- 13,17 ----
"Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n"
! "Content-Type: text/plain; charset=KOI8-R\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 1
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 2
#endif /* _PATCHLEVEL_H_ */

147
src/patches/bash/bash32-003 Normal file
View File

@@ -0,0 +1,147 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-003
Bug-Reported-by: John Gatewood Ham <zappaman@buraphalinux.org>
Bug-Reference-ID: <Pine.LNX.4.64.0610121334140.15558@www.buraphalinux.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00045.html
Bug-Description:
When using the conditional command's `=~' operator to match regular
expressions, the parser did not skip over shell metacharacters in the
regular expression, leading to syntax errors.
Patch:
*** ../bash-3.2-patched/parse.y Tue Oct 17 11:45:20 2006
--- parse.y Sat Oct 14 14:56:16 2006
***************
*** 1029,1034 ****
--- 1029,1035 ----
#define PST_CMDTOKEN 0x1000 /* command token OK - unused */
#define PST_COMPASSIGN 0x2000 /* parsing x=(...) compound assignment */
#define PST_ASSIGNOK 0x4000 /* assignment statement ok in this context */
+ #define PST_REGEXP 0x8000 /* parsing an ERE/BRE as a single word */
/* Initial size to allocate for tokens, and the
amount to grow them by. */
***************
*** 2591,2596 ****
--- 2592,2600 ----
return (character);
}
+ if (parser_state & PST_REGEXP)
+ goto tokword;
+
/* Shell meta-characters. */
if MBTEST(shellmeta (character) && ((parser_state & PST_DBLPAREN) == 0))
{
***************
*** 2698,2703 ****
--- 2702,2708 ----
if MBTEST(character == '-' && (last_read_token == LESS_AND || last_read_token == GREATER_AND))
return (character);
+ tokword:
/* Okay, if we got this far, we have to read a word. Read one,
and then check it against the known ones. */
result = read_token_word (character);
***************
*** 3202,3209 ****
if (tok == WORD && test_binop (yylval.word->word))
op = yylval.word;
#if defined (COND_REGEXP)
! else if (tok == WORD && STREQ (yylval.word->word,"=~"))
! op = yylval.word;
#endif
else if (tok == '<' || tok == '>')
op = make_word_from_token (tok); /* ( */
--- 3207,3217 ----
if (tok == WORD && test_binop (yylval.word->word))
op = yylval.word;
#if defined (COND_REGEXP)
! else if (tok == WORD && STREQ (yylval.word->word, "=~"))
! {
! op = yylval.word;
! parser_state |= PST_REGEXP;
! }
#endif
else if (tok == '<' || tok == '>')
op = make_word_from_token (tok); /* ( */
***************
*** 3234,3239 ****
--- 3242,3248 ----
/* rhs */
tok = read_token (READ);
+ parser_state &= ~PST_REGEXP;
if (tok == WORD)
{
tright = make_cond_node (COND_TERM, yylval.word, (COND_COM *)NULL, (COND_COM *)NULL);
***************
*** 3419,3427 ****
goto next_character;
}
#ifdef EXTENDED_GLOB
/* Parse a ksh-style extended pattern matching specification. */
! if (extended_glob && PATTERN_CHAR (character))
{
peek_char = shell_getc (1);
if MBTEST(peek_char == '(') /* ) */
--- 3428,3461 ----
goto next_character;
}
+ #ifdef COND_REGEXP
+ /* When parsing a regexp as a single word inside a conditional command,
+ we need to special-case characters special to both the shell and
+ regular expressions. Right now, that is only '(' and '|'. */ /*)*/
+ if MBTEST((parser_state & PST_REGEXP) && (character == '(' || character == '|')) /*)*/
+ {
+ if (character == '|')
+ goto got_character;
+
+ push_delimiter (dstack, character);
+ ttok = parse_matched_pair (cd, '(', ')', &ttoklen, 0);
+ pop_delimiter (dstack);
+ if (ttok == &matched_pair_error)
+ return -1; /* Bail immediately. */
+ RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 2,
+ token_buffer_size, TOKEN_DEFAULT_GROW_SIZE);
+ token[token_index++] = character;
+ strcpy (token + token_index, ttok);
+ token_index += ttoklen;
+ FREE (ttok);
+ dollar_present = all_digit_token = 0;
+ goto next_character;
+ }
+ #endif /* COND_REGEXP */
+
#ifdef EXTENDED_GLOB
/* Parse a ksh-style extended pattern matching specification. */
! if MBTEST(extended_glob && PATTERN_CHAR (character))
{
peek_char = shell_getc (1);
if MBTEST(peek_char == '(') /* ) */
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 2
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 3
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,96 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-004
Bug-Reported-by: Stuart Shelton <srcshelton@gmail.com>
Bug-Reference-ID: <619141e40610261203y6cda5aa6i23cb24c7aeba996e@mail.gmail.com>
Bug-Reference-URL:
Bug-Description:
A bug in the parameter pattern substitution implementation treated a pattern
whose first character was `/' (after expansion) as specifying global
replacement.
Patch:
*** ../bash-3.2/subst.c Tue Sep 19 08:35:09 2006
--- subst.c Thu Oct 26 09:17:50 2006
***************
*** 5707,5712 ****
--- 5707,5717 ----
vtype &= ~VT_STARSUB;
mflags = 0;
+ if (patsub && *patsub == '/')
+ {
+ mflags |= MATCH_GLOBREP;
+ patsub++;
+ }
/* Malloc this because expand_string_if_necessary or one of the expansion
functions in its call chain may free it on a substitution error. */
***************
*** 5741,5753 ****
}
/* ksh93 doesn't allow the match specifier to be a part of the expanded
! pattern. This is an extension. */
p = pat;
! if (pat && pat[0] == '/')
! {
! mflags |= MATCH_GLOBREP|MATCH_ANY;
! p++;
! }
else if (pat && pat[0] == '#')
{
mflags |= MATCH_BEG;
--- 5746,5757 ----
}
/* ksh93 doesn't allow the match specifier to be a part of the expanded
! pattern. This is an extension. Make sure we don't anchor the pattern
! at the beginning or end of the string if we're doing global replacement,
! though. */
p = pat;
! if (mflags & MATCH_GLOBREP)
! mflags |= MATCH_ANY;
else if (pat && pat[0] == '#')
{
mflags |= MATCH_BEG;
*** ../bash-3.2/tests/new-exp.right Thu Aug 10 12:00:00 2006
--- tests/new-exp.right Sun Oct 29 16:03:36 2006
***************
*** 430,436 ****
Case06---1---A B C::---
Case07---3---A:B:C---
Case08---3---A:B:C---
! ./new-exp.tests: line 506: /${$(($#-1))}: bad substitution
argv[1] = <a>
argv[2] = <b>
argv[3] = <c>
--- 430,436 ----
Case06---1---A B C::---
Case07---3---A:B:C---
Case08---3---A:B:C---
! ./new-exp.tests: line 506: ${$(($#-1))}: bad substitution
argv[1] = <a>
argv[2] = <b>
argv[3] = <c>
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 3
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 4
#endif /* _PATCHLEVEL_H_ */

223
src/patches/bash/bash32-005 Normal file
View File

@@ -0,0 +1,223 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-005
Bug-Reported-by: Stuart Shelton <stuart@openobjects.com>
Bug-Reference-ID: <453F7CC8.6030907@openobjects.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-10/msg00127.html
Bug-Description:
A missing extern declaration for `asprintf' caused `double' arguments to be
passed as `0', leading to incorrect results. Additionally, a bug in the
replacement asprintf/snprintf function caused an infinite loop when passed
0 arguments to the floating point conversions under some circumstances.
Patch:
*** ../bash-3.2/builtins/printf.def Mon Sep 18 08:48:42 2006
--- builtins/printf.def Tue Oct 31 08:19:44 2006
***************
*** 49,54 ****
--- 49,60 ----
# define INT_MIN (-2147483647-1)
#endif
+ #if defined (PREFER_STDARG)
+ # include <stdarg.h>
+ #else
+ # include <varargs.h>
+ #endif
+
#include <stdio.h>
#include <chartypes.h>
***************
*** 151,156 ****
--- 157,166 ----
#define SKIP1 "#'-+ 0"
#define LENMODS "hjlLtz"
+ #ifndef HAVE_ASPRINTF
+ extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
+ #endif
+
static void printf_erange __P((char *));
static int printstr __P((char *, char *, int, int, int));
static int tescape __P((char *, char *, int *));
*** ../bash-3.2/lib/sh/snprintf.c Thu Apr 6 09:48:40 2006
--- lib/sh/snprintf.c Sat Oct 28 00:00:13 2006
***************
*** 471,476 ****
--- 476,483 ----
10^x ~= r
* log_10(200) = 2;
* log_10(250) = 2;
+ *
+ * NOTE: do not call this with r == 0 -- an infinite loop results.
*/
static int
log_10(r)
***************
*** 576,583 ****
{
integral_part[0] = '0';
integral_part[1] = '\0';
! fraction_part[0] = '0';
! fraction_part[1] = '\0';
if (fract)
*fract = fraction_part;
return integral_part;
--- 583,593 ----
{
integral_part[0] = '0';
integral_part[1] = '\0';
! /* The fractional part has to take the precision into account */
! for (ch = 0; ch < precision-1; ch++)
! fraction_part[ch] = '0';
! fraction_part[ch] = '0';
! fraction_part[ch+1] = '\0';
if (fract)
*fract = fraction_part;
return integral_part;
***************
*** 805,810 ****
--- 815,821 ----
PUT_CHAR(*tmp, p);
tmp++;
}
+
PAD_LEFT(p);
}
***************
*** 972,982 ****
if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
tmp = t;
/* calculate the padding. 1 for the dot */
p->width = p->width -
((d > 0. && p->justify == RIGHT) ? 1:0) -
((p->flags & PF_SPACE) ? 1:0) -
! strlen(tmp) - p->precision - 1;
PAD_RIGHT(p);
PUT_PLUS(d, p, 0.);
PUT_SPACE(d, p, 0.);
--- 983,1003 ----
if ((p->flags & PF_THOUSANDS) && grouping && (t = groupnum (tmp)))
tmp = t;
+ if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
+ {
+ /* smash the trailing zeros unless altform */
+ for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
+ tmp2[i] = '\0';
+ if (tmp2[0] == '\0')
+ p->precision = 0;
+ }
+
/* calculate the padding. 1 for the dot */
p->width = p->width -
((d > 0. && p->justify == RIGHT) ? 1:0) -
((p->flags & PF_SPACE) ? 1:0) -
! strlen(tmp) - p->precision -
! ((p->precision != 0 || (p->flags & PF_ALTFORM)) ? 1 : 0); /* radix char */
PAD_RIGHT(p);
PUT_PLUS(d, p, 0.);
PUT_SPACE(d, p, 0.);
***************
*** 991,1001 ****
if (p->precision != 0 || (p->flags & PF_ALTFORM))
PUT_CHAR(decpoint, p); /* put the '.' */
- if ((*p->pf == 'g' || *p->pf == 'G') && (p->flags & PF_ALTFORM) == 0)
- /* smash the trailing zeros unless altform */
- for (i = strlen(tmp2) - 1; i >= 0 && tmp2[i] == '0'; i--)
- tmp2[i] = '\0';
-
for (; *tmp2; tmp2++)
PUT_CHAR(*tmp2, p); /* the fraction */
--- 1012,1017 ----
***************
*** 1011,1024 ****
char *tmp, *tmp2;
int j, i;
! if (chkinfnan(p, d, 1) || chkinfnan(p, d, 2))
return; /* already printed nan or inf */
GETLOCALEDATA(decpoint, thoussep, grouping);
DEF_PREC(p);
! j = log_10(d);
! d = d / pow_10(j); /* get the Mantissa */
! d = ROUND(d, p);
tmp = dtoa(d, p->precision, &tmp2);
/* 1 for unit, 1 for the '.', 1 for 'e|E',
--- 1027,1045 ----
char *tmp, *tmp2;
int j, i;
! if (d != 0 && (chkinfnan(p, d, 1) || chkinfnan(p, d, 2)))
return; /* already printed nan or inf */
GETLOCALEDATA(decpoint, thoussep, grouping);
DEF_PREC(p);
! if (d == 0.)
! j = 0;
! else
! {
! j = log_10(d);
! d = d / pow_10(j); /* get the Mantissa */
! d = ROUND(d, p);
! }
tmp = dtoa(d, p->precision, &tmp2);
/* 1 for unit, 1 for the '.', 1 for 'e|E',
***************
*** 1076,1081 ****
--- 1097,1103 ----
PUT_CHAR(*tmp, p);
tmp++;
}
+
PAD_LEFT(p);
}
#endif
***************
*** 1358,1364 ****
STAR_ARGS(data);
DEF_PREC(data);
d = GETDOUBLE(data);
! i = log_10(d);
/*
* for '%g|%G' ANSI: use f if exponent
* is in the range or [-4,p] exclusively
--- 1380,1386 ----
STAR_ARGS(data);
DEF_PREC(data);
d = GETDOUBLE(data);
! i = (d != 0.) ? log_10(d) : -1;
/*
* for '%g|%G' ANSI: use f if exponent
* is in the range or [-4,p] exclusively
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 4
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 5
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,45 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-006
Bug-Reported-by: ebb9@byu.net
Bug-Reference-ID: <45540862.9030900@byu.net>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00017.html
http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00016.html
Bug-Description:
In some cases, code that is intended to be used in the presence of multibyte
characters is called when no such characters are present, leading to incorrect
display position calculations and incorrect redisplay.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
--- lib/readline/display.c Mon Nov 13 17:55:57 2006
***************
*** 2381,2384 ****
--- 2409,2414 ----
if (end <= start)
return 0;
+ if (MB_CUR_MAX == 1 || rl_byte_oriented)
+ return (end - start);
memset (&ps, 0, sizeof (mbstate_t));
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 5
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 6
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,55 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-007
Bug-Reported-by: jidanni@jidanni.org
Bug-Reference-ID: <E1Gkg12-00017D-Fm@jidanni.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00039.html
Bug-Description:
When removing the current or previous job from the jobs list, bash incorrectly
resets the current job under some circumstances.
Patch:
*** ../bash-3.2-patched/jobs.c Sat Jul 29 16:40:48 2006
--- jobs.c Fri Nov 24 14:50:01 2006
***************
*** 985,990 ****
if (temp == 0)
return;
- if (job_index == js.j_current || job_index == js.j_previous)
- reset_current ();
if ((dflags & DEL_NOBGPID) == 0)
--- 985,988 ----
***************
*** 1029,1032 ****
--- 1027,1033 ----
else if (jobs[js.j_firstj] == 0 || jobs[js.j_lastj] == 0)
reset_job_indices ();
+
+ if (job_index == js.j_current || job_index == js.j_previous)
+ reset_current ();
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 6
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 7
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,48 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-008
Bug-Reported-by: Linda Walsh <bash@tlinx.org>
Bug-Reference-ID: <456041FD.8000605@tlinx.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-11/msg00040.html
Bug-Description:
When checking pathnames from the command hash table (e.g., when the `checkhash'
shell option is enabled), a bug causes bash to delete and re-lookup each
command.
Patch:
*** ../bash-3.2-patched/findcmd.c Wed Aug 17 16:49:54 2005
--- findcmd.c Fri Nov 24 10:48:37 2006
***************
*** 309,313 ****
{
st = file_status (hashed_file);
! if ((st ^ (FS_EXISTS | FS_EXECABLE)) != 0)
{
phash_remove (pathname);
--- 309,313 ----
{
st = file_status (hashed_file);
! if ((st & (FS_EXISTS|FS_EXECABLE)) != (FS_EXISTS|FS_EXECABLE))
{
phash_remove (pathname);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 7
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 8
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,61 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-009
Bug-Reported-by: James.M.Botte@lowes.com
Bug-Reference-ID: <BA9FF90F7E5B424998F98EDA9F1F94BE01FA9853@msexchdb01.lowes.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00000.html
Bug-Description:
When using its built-in replacement for snprintf/asprintf, bash does not
treat the %x, %X, and %o format specifiers as unsigned numbers.
Patch:
*** ../bash-3.2-patched/lib/sh/snprintf.c Mon Nov 13 08:58:52 2006
--- lib/sh/snprintf.c Wed Dec 6 11:15:04 2006
***************
*** 669,673 ****
sd = d; /* signed for ' ' padding in base 10 */
! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
if (*p->pf == 'X')
flags |= FL_HEXUPPER;
--- 674,679 ----
sd = d; /* signed for ' ' padding in base 10 */
! flags = 0;
! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
if (*p->pf == 'X')
flags |= FL_HEXUPPER;
***************
*** 739,743 ****
sd = d; /* signed for ' ' padding in base 10 */
! flags = (*p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
if (*p->pf == 'X')
flags |= FL_HEXUPPER;
--- 745,749 ----
sd = d; /* signed for ' ' padding in base 10 */
! flags = (*p->pf == 'x' || *p->pf == 'X' || *p->pf == 'o' || *p->pf == 'u' || *p->pf == 'U') ? FL_UNSIGNED : 0;
if (*p->pf == 'X')
flags |= FL_HEXUPPER;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 8
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 9
#endif /* _PATCHLEVEL_H_ */

207
src/patches/bash/bash32-010 Normal file
View File

@@ -0,0 +1,207 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-010
Bug-Reported-by: Ryan Waldron <rew@erebor.com>
Bug-Reference-ID: <20070119065603.546D011E9C@kansas.erebor.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00059.html
Bug-Description:
The glibc implementation of regcomp/regexec does not allow backslashes to
escape "ordinary" pattern characters when matching. Bash used backslashes
to quote all characters when the pattern argument to the [[ special
command's =~ operator was quoted. This caused the match to fail on Linux
and other systems using GNU libc.
Patch:
*** ../bash-3.2.9/pathexp.h Sat Feb 19 17:23:18 2005
--- pathexp.h Wed Jan 31 22:53:16 2007
***************
*** 1,5 ****
/* pathexp.h -- The shell interface to the globbing library. */
! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 1,5 ----
/* pathexp.h -- The shell interface to the globbing library. */
! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 33,36 ****
--- 33,37 ----
#define QGLOB_CVTNULL 0x01 /* convert QUOTED_NULL strings to '\0' */
#define QGLOB_FILENAME 0x02 /* do correct quoting for matching filenames */
+ #define QGLOB_REGEXP 0x04 /* quote an ERE for regcomp/regexec */
#if defined (EXTENDED_GLOB)
*** ../bash-3.2.9/pathexp.c Mon May 6 13:43:05 2002
--- pathexp.c Mon Feb 26 16:59:23 2007
***************
*** 1,5 ****
/* pathexp.c -- The shell interface to the globbing library. */
! /* Copyright (C) 1995-2002 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 1,5 ----
/* pathexp.c -- The shell interface to the globbing library. */
! /* Copyright (C) 1995-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 111,114 ****
--- 111,141 ----
}
+ /* Return 1 if C is a character that is `special' in a POSIX ERE and needs to
+ be quoted to match itself. */
+ static inline int
+ ere_char (c)
+ int c;
+ {
+ switch (c)
+ {
+ case '.':
+ case '[':
+ case '\\':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case '?':
+ case '{':
+ case '|':
+ case '^':
+ case '$':
+ return 1;
+ default:
+ return 0;
+ }
+ return (0);
+ }
+
/* PATHNAME can contain characters prefixed by CTLESC; this indicates
that the character is to be quoted. We quote it here in the style
***************
*** 143,146 ****
--- 170,175 ----
if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
continue;
+ if ((qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
+ continue;
temp[j++] = '\\';
i++;
*** ../bash-3.2.9/subst.c Tue Nov 7 16:14:41 2006
--- subst.c Wed Jan 31 23:09:58 2007
***************
*** 5,9 ****
beauty, but, hey, you're alright.'' */
! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 5,9 ----
beauty, but, hey, you're alright.'' */
! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 2647,2655 ****
/* This needs better error handling. */
/* Expand W for use as an argument to a unary or binary operator in a
! [[...]] expression. If SPECIAL is nonzero, this is the rhs argument
to the != or == operator, and should be treated as a pattern. In
! this case, we quote the string specially for the globbing code. The
! caller is responsible for removing the backslashes if the unquoted
! words is needed later. */
char *
cond_expand_word (w, special)
--- 2647,2656 ----
/* This needs better error handling. */
/* Expand W for use as an argument to a unary or binary operator in a
! [[...]] expression. If SPECIAL is 1, this is the rhs argument
to the != or == operator, and should be treated as a pattern. In
! this case, we quote the string specially for the globbing code. If
! SPECIAL is 2, this is an rhs argument for the =~ operator, and should
! be quoted appropriately for regcomp/regexec. The caller is responsible
! for removing the backslashes if the unquoted word is needed later. */
char *
cond_expand_word (w, special)
***************
*** 2659,2662 ****
--- 2660,2664 ----
char *r, *p;
WORD_LIST *l;
+ int qflags;
if (w->word == 0 || w->word[0] == '\0')
***************
*** 2673,2678 ****
else
{
p = string_list (l);
! r = quote_string_for_globbing (p, QGLOB_CVTNULL);
free (p);
}
--- 2675,2683 ----
else
{
+ qflags = QGLOB_CVTNULL;
+ if (special == 2)
+ qflags |= QGLOB_REGEXP;
p = string_list (l);
! r = quote_string_for_globbing (p, qflags);
free (p);
}
*** ../bash-3.2.9/execute_cmd.c Sat Aug 26 00:23:17 2006
--- execute_cmd.c Wed Jan 31 23:12:06 2007
***************
*** 1,5 ****
/* execute_cmd.c -- Execute a COMMAND structure. */
! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 1,5 ----
/* execute_cmd.c -- Execute a COMMAND structure. */
! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 2547,2551 ****
if (arg1 == 0)
arg1 = nullstr;
! arg2 = cond_expand_word (cond->right->op, patmatch||rmatch);
if (arg2 == 0)
arg2 = nullstr;
--- 2547,2551 ----
if (arg1 == 0)
arg1 = nullstr;
! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
if (arg2 == 0)
arg2 = nullstr;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 9
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 10
#endif /* _PATCHLEVEL_H_ */

138
src/patches/bash/bash32-011 Normal file
View File

@@ -0,0 +1,138 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-011
Bug-Reported-by: Petr Sumbera <Petr.Sumbera@Sun.COM>
Bug-Reference-ID: <45AF5F4B.1020800@sun.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-01/msg00049.html
Bug-Description:
Under certain circumstances (loopback mounts), the bash getcwd does not
return correct results. This patch allows the use of the Solaris libc
getcwd even though it doesn't dynamically allocate memory.
Run `touch configure' to make sure make doesn't try to run autoconf.
Then run configure with whatever options you like.
Patch:
*** ../bash-3.2-patched/configure.in Tue Sep 26 11:05:45 2006
--- configure.in Wed Jan 31 09:48:00 2007
***************
*** 6,10 ****
dnl Process this file with autoconf to produce a configure script.
! # Copyright (C) 1987-2006 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
--- 6,10 ----
dnl Process this file with autoconf to produce a configure script.
! # Copyright (C) 1987-2007 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
***************
*** 992,996 ****
sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
--- 992,997 ----
sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
*** ../bash-3.2-patched/config-bot.h Tue Sep 12 16:43:04 2006
--- config-bot.h Tue Mar 6 10:41:31 2007
***************
*** 2,6 ****
/* modify settings or make new ones based on what autoconf tells us. */
! /* Copyright (C) 1989-2002 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 2,6 ----
/* modify settings or make new ones based on what autoconf tells us. */
! /* Copyright (C) 1989-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 71,77 ****
#endif
! /* If we have a getcwd(3), but it calls popen(), #undef HAVE_GETCWD so
! the replacement in getcwd.c will be built. */
! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN)
# undef HAVE_GETCWD
#endif
--- 71,79 ----
#endif
! /* If we have a getcwd(3), but one that does not dynamically allocate memory,
! #undef HAVE_GETCWD so the replacement in getcwd.c will be built. We do
! not do this on Solaris, because their implementation of loopback mounts
! breaks the traditional file system assumptions that getcwd uses. */
! #if defined (HAVE_GETCWD) && defined (GETCWD_BROKEN) && !defined (SOLARIS)
# undef HAVE_GETCWD
#endif
*** ../bash-3.2-patched/builtins/common.c Thu Jul 27 09:39:51 2006
--- builtins/common.c Tue Mar 6 10:43:27 2007
***************
*** 1,3 ****
! /* Copyright (C) 1987-2005 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 1,3 ----
! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 476,480 ****
--- 476,484 ----
if (the_current_working_directory == 0)
{
+ #if defined (GETCWD_BROKEN)
+ the_current_working_directory = getcwd (0, PATH_MAX);
+ #else
the_current_working_directory = getcwd (0, 0);
+ #endif
if (the_current_working_directory == 0)
{
*** ../bash-3.2-patched/configure Tue Sep 26 11:06:01 2006
--- configure Tue Mar 6 10:59:20 2007
***************
*** 27317,27321 ****
sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
! solaris2.5*) LOCAL_CFLAGS=-DSunOS5 ;;
lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
--- 27317,27322 ----
sco3.2*) LOCAL_CFLAGS=-DMUST_UNBLOCK_CHLD ;;
sunos4*) LOCAL_CFLAGS=-DSunOS4 ;;
! solaris2.5*) LOCAL_CFLAGS="-DSunOS5 -DSOLARIS" ;;
! solaris2*) LOCAL_CFLAGS=-DSOLARIS ;;
lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;;
linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 10
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 11
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,96 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-012
Bug-Reported-by: John Wyman <JohnWyman@celink.com>
Bug-Reference-ID: <5E7DEFC094C35044B87FAE761D9F0EE20143A3B7@exchange2k.celink.com>
Bug-Reference-URL:
Bug-Description:
Some systems (AIX 4.x) don't implement the PRI_xxx macros correctly,
causing syntax errors when attempting to compile bash on those systems.
This patch adds support for the PRI_MACROS_BROKEN define.
You will need to re-run `configure' after applying the patch. Run
`touch configure' so make doesn't try to run autoconf.
Patch:
*** ../bash-3.2.11/config.h.in Tue Sep 12 16:00:54 2006
--- config.h.in Tue Mar 6 11:17:55 2007
***************
*** 1,5 ****
/* config.h -- Configuration file for bash. */
! /* Copyright (C) 1987-2006 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 1,5 ----
/* config.h -- Configuration file for bash. */
! /* Copyright (C) 1987-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 414,417 ****
--- 414,419 ----
#undef HAVE_DECL_STRTOLD
+ #undef PRI_MACROS_BROKEN
+
#undef STRTOLD_BROKEN
***************
*** 1007,1010 ****
--- 1009,1015 ----
#undef HAVE_DCGETTEXT
+ /* Define if you have the `localeconv' function. */
+ #undef HAVE_LOCALECONV
+
/* Define if your system has a working `malloc' function. */
/* #undef HAVE_MALLOC */
*** ../bash-3.2.11/builtins/printf.def Mon Nov 13 08:58:52 2006
--- builtins/printf.def Sun Feb 4 13:58:59 2007
***************
*** 2,6 ****
It implements the builtin "printf" in Bash.
! Copyright (C) 1997-2005 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
--- 2,6 ----
It implements the builtin "printf" in Bash.
! Copyright (C) 1997-2007 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
***************
*** 71,74 ****
--- 71,78 ----
#include "common.h"
+ #if defined (PRI_MACROS_BROKEN)
+ # undef PRIdMAX
+ #endif
+
#if !defined (PRIdMAX)
# if HAVE_LONG_LONG
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 11
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 12
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,65 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-013
Bug-Reported-by: Magnus Svensson <msvensson@mysql.com>
Bug-Reference-ID: <45BDC44D.80609@mysql.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-01/msg00002.html
Bug-Description:
Readline neglects to reallocate the array it uses to keep track of wrapped
screen lines when increasing its size. This will eventually result in
segmentation faults when given sufficiently long input.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c Thu Sep 14 14:20:12 2006
--- lib/readline/display.c Fri Feb 2 20:23:17 2007
***************
*** 561,574 ****
--- 561,586 ----
wrap_offset = prompt_invis_chars_first_line = 0;
}
+ #if defined (HANDLE_MULTIBYTE)
#define CHECK_INV_LBREAKS() \
do { \
if (newlines >= (inv_lbsize - 2)) \
{ \
inv_lbsize *= 2; \
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+ _rl_wrapped_line = (int *)xrealloc (_rl_wrapped_line, inv_lbsize * sizeof (int)); \
} \
} while (0)
+ #else
+ #define CHECK_INV_LBREAKS() \
+ do { \
+ if (newlines >= (inv_lbsize - 2)) \
+ { \
+ inv_lbsize *= 2; \
+ inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
+ } \
+ } while (0)
+ #endif /* HANDLE_MULTIBYTE */
#if defined (HANDLE_MULTIBYTE)
#define CHECK_LPOS() \
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 12
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 13
#endif /* _PATCHLEVEL_H_ */

307
src/patches/bash/bash32-014 Normal file
View File

@@ -0,0 +1,307 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-014
Bug-Reported-by: Brett Stahlman <brettstahlman@comcast.net>
Bug-Reference-ID: <000701c72d29$a227e0e0$5ec7cf47@computerroom>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2006-12/msg00065.html
Bug-Description:
Bash mishandles word splitting under certain circumstances when IFS is
null (IFS=). Constructs affected include ${param/pat/sub} and others
when expanding arrays (array[@]).
Patch:
*** ../bash-3.2-patched/array.c Wed Jun 1 16:39:22 2005
--- array.c Mon Jan 15 22:58:00 2007
***************
*** 121,125 ****
}
- #ifdef INCLUDE_UNUSED
/*
* Make and return a new array composed of the elements in array A from
--- 121,124 ----
***************
*** 142,146 ****
n = array_create_element (element_index(p), element_value(p));
ADD_BEFORE(a->head, n);
! mi = element_index(ae);
}
a->num_elements = i;
--- 141,145 ----
n = array_create_element (element_index(p), element_value(p));
ADD_BEFORE(a->head, n);
! mi = element_index(n);
}
a->num_elements = i;
***************
*** 148,152 ****
return a;
}
- #endif
/*
--- 147,150 ----
***************
*** 301,304 ****
--- 299,319 ----
}
+ ARRAY *
+ array_quote_escapes(array)
+ ARRAY *array;
+ {
+ ARRAY_ELEMENT *a;
+ char *t;
+
+ if (array == 0 || array_head(array) == 0 || array_empty(array))
+ return (ARRAY *)NULL;
+ for (a = element_forw(array->head); a != array->head; a = element_forw(a)) {
+ t = quote_escapes (a->value);
+ FREE(a->value);
+ a->value = t;
+ }
+ return array;
+ }
+
/*
* Return a string whose elements are the members of array A beginning at
***************
*** 312,318 ****
int starsub, quoted;
{
ARRAY_ELEMENT *h, *p;
arrayind_t i;
! char *ifs, sep[2];
p = a ? array_head (a) : 0;
--- 327,334 ----
int starsub, quoted;
{
+ ARRAY *a2;
ARRAY_ELEMENT *h, *p;
arrayind_t i;
! char *ifs, sep[2], *t;
p = a ? array_head (a) : 0;
***************
*** 337,340 ****
--- 353,363 ----
;
+ a2 = array_slice(a, h, p);
+
+ if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+ array_quote(a2);
+ else
+ array_quote_escapes(a2);
+
if (starsub && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))) {
ifs = getifs();
***************
*** 344,348 ****
sep[1] = '\0';
! return (array_to_string_internal (h, p, sep, quoted));
}
--- 367,374 ----
sep[1] = '\0';
! t = array_to_string (a2, sep, 0);
! array_dispose(a2);
!
! return t;
}
***************
*** 368,372 ****
if (mflags & MATCH_QUOTED)
! array_quote (a2);
if (mflags & MATCH_STARSUB) {
ifs = getifs();
--- 394,400 ----
if (mflags & MATCH_QUOTED)
! array_quote(a2);
! else
! array_quote_escapes(a2);
if (mflags & MATCH_STARSUB) {
ifs = getifs();
*** ../bash-3.2-patched/array.h Sun Jun 1 15:50:30 2003
--- array.h Mon Jan 15 22:35:35 2007
***************
*** 56,59 ****
--- 56,60 ----
extern int array_shift_element __P((ARRAY *, char *));
extern ARRAY *array_quote __P((ARRAY *));
+ extern ARRAY *array_quote_escapes __P((ARRAY *));
extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int));
*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
--- subst.c Tue Mar 6 11:40:55 2007
***************
*** 1888,1892 ****
--- 1889,1899 ----
#endif
+ /* XXX -- why call quote_list if ifs == 0? we can get away without doing
+ it now that quote_escapes quotes spaces */
+ #if 0
tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
+ #else
+ tlist = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+ #endif
? quote_list (list)
: list_quote_escapes (list);
***************
*** 2922,2926 ****
/* Quote escape characters in string s, but no other characters. This is
used to protect CTLESC and CTLNUL in variable values from the rest of
! the word expansion process after the variable is expanded. */
char *
quote_escapes (string)
--- 2935,2944 ----
/* Quote escape characters in string s, but no other characters. This is
used to protect CTLESC and CTLNUL in variable values from the rest of
! the word expansion process after the variable is expanded. If IFS is
! null, we quote spaces as well, just in case we split on spaces later
! (in the case of unquoted $@, we will eventually attempt to split the
! entire word on spaces). Corresponding code exists in dequote_escapes.
! Even if we don't end up splitting on spaces, quoting spaces is not a
! problem. */
char *
quote_escapes (string)
***************
*** 2930,2933 ****
--- 2948,2952 ----
size_t slen;
char *result, *send;
+ int quote_spaces;
DECLARE_MBSTATE;
***************
*** 2935,2938 ****
--- 2954,2958 ----
send = string + slen;
+ quote_spaces = (ifs_value && *ifs_value == 0);
t = result = (char *)xmalloc ((slen * 2) + 1);
s = string;
***************
*** 2940,2944 ****
while (*s)
{
! if (*s == CTLESC || *s == CTLNUL)
*t++ = CTLESC;
COPY_CHAR_P (t, s, send);
--- 2960,2964 ----
while (*s)
{
! if (*s == CTLESC || *s == CTLNUL || (quote_spaces && *s == ' '))
*t++ = CTLESC;
COPY_CHAR_P (t, s, send);
***************
*** 2982,2985 ****
--- 3002,3006 ----
size_t slen;
char *result, *send;
+ int quote_spaces;
DECLARE_MBSTATE;
***************
*** 2996,3002 ****
return (strcpy (result, s));
while (*s)
{
! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
{
s++;
--- 3017,3024 ----
return (strcpy (result, s));
+ quote_spaces = (ifs_value && *ifs_value == 0);
while (*s)
{
! if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL || (quote_spaces && s[1] == ' ')))
{
s++;
***************
*** 4462,4466 ****
RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL)
istring[istring_index++] = CTLESC;
--- 4498,4510 ----
RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
! /* This is essentially quote_string inline */
! if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */)
! istring[istring_index++] = CTLESC;
! /* Escape CTLESC and CTLNUL in the output to protect those characters
! from the rest of the word expansions (word splitting and globbing.)
! This is essentially quote_escapes inline. */
! else if (c == CTLESC)
! istring[istring_index++] = CTLESC;
! else if (c == CTLNUL || (c == ' ' && (ifs_value && *ifs_value == 0)))
istring[istring_index++] = CTLESC;
***************
*** 5552,5555 ****
--- 5610,5616 ----
rely on array_subrange to understand how to deal with them). */
tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
+ #if 0
+ /* array_subrange now calls array_quote_escapes as appropriate, so the
+ caller no longer needs to. */
if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
{
***************
*** 5558,5561 ****
--- 5619,5623 ----
}
else
+ #endif
temp = tt;
break;
***************
*** 5808,5811 ****
--- 5870,5876 ----
case VT_ARRAYVAR:
temp = array_patsub (array_cell (v), p, rep, mflags);
+ #if 0
+ /* Don't need to do this anymore; array_patsub calls array_quote_escapes
+ as appropriate before adding the space separators. */
if (temp && (mflags & MATCH_QUOTED) == 0)
{
***************
*** 5814,5817 ****
--- 5879,5883 ----
temp = tt;
}
+ #endif
break;
#endif
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 13
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 14
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,95 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-015
Bug-Reported-by:
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
Under certain circumstances, when using FIFOs for process substitution,
bash fails to unlink the FIFOs. This leaves open file descriptors that
can cause the shell to hang and litters the file system.
Patch:
*** ../bash-3.2-patched/execute_cmd.c Fri Mar 2 16:20:50 2007
--- execute_cmd.c Wed Jan 31 23:12:06 2007
***************
*** 3051,3054 ****
--- 3051,3059 ----
command_line = savestring (the_printed_command_except_trap);
+ #if defined (PROCESS_SUBSTITUTION)
+ if ((subshell_environment & SUBSHELL_COMSUB) && (simple_command->flags & CMD_NO_FORK) && fifos_pending() > 0)
+ simple_command->flags &= ~CMD_NO_FORK;
+ #endif
+
execute_disk_command (words, simple_command->redirects, command_line,
pipe_in, pipe_out, async, fds_to_close,
*** ../bash-3.2-patched/subst.c Fri Mar 2 16:20:50 2007
--- subst.c Tue Mar 6 11:40:55 2007
***************
*** 4129,4132 ****
--- 4151,4160 ----
}
+ int
+ fifos_pending ()
+ {
+ return nfifo;
+ }
+
static char *
make_named_pipe ()
***************
*** 4178,4181 ****
--- 4206,4215 ----
}
+ int
+ fifos_pending ()
+ {
+ return 0; /* used for cleanup; not needed with /dev/fd */
+ }
+
void
unlink_fifo_list ()
***************
*** 4671,4674 ****
--- 4719,4725 ----
last_command_exit_value = rc;
rc = run_exit_trap ();
+ #if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
+ #endif
exit (rc);
}
*** ../bash-3.2-patched/subst.h Tue Sep 19 08:34:41 2006
--- subst.h Wed Jan 10 09:46:47 2007
***************
*** 223,226 ****
--- 223,227 ----
extern char *pat_subst __P((char *, char *, char *, int));
+ extern int fifos_pending __P((void));
extern void unlink_fifo_list __P((void));
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 14
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 15
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,52 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-016
Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
Bug-Reference-ID: <1171795523.8021.18.camel@localhost>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-02/msg00054.html
Bug-Description:
When moving the cursor, bash sometimes misplaces the cursor when the prompt
contains two or more multibyte characters. The particular circumstance that
uncovered the problem was having the (multibyte) current directory name in
the prompt string.
Patch:
*** ../bash-3.2/lib/readline/display.c Fri Jan 19 13:34:50 2007
--- lib/readline/display.c Sat Mar 10 17:25:44 2007
***************
*** 1745,1749 ****
{
dpos = _rl_col_width (data, 0, new);
! if (dpos > prompt_last_invisible) /* XXX - don't use woff here */
{
dpos -= woff;
--- 1745,1752 ----
{
dpos = _rl_col_width (data, 0, new);
! /* Use NEW when comparing against the last invisible character in the
! prompt string, since they're both buffer indices and DPOS is a
! desired display position. */
! if (new > prompt_last_invisible) /* XXX - don't use woff here */
{
dpos -= woff;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 15
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 16
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,85 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-017
Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
Bug-Reference-ID: <1173636022.7039.36.camel@localhost>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00039.html
Bug-Description:
When restoring the original prompt after finishing an incremental search,
bash sometimes places the cursor incorrectly if the primary prompt contains
invisible characters.
Patch:
*** ../bash-3.2.16/lib/readline/display.c Fri Apr 20 13:30:16 2007
--- lib/readline/display.c Fri Apr 20 15:17:01 2007
***************
*** 1599,1604 ****
if (temp > 0)
{
_rl_output_some_chars (nfd, temp);
! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);;
}
}
--- 1599,1618 ----
if (temp > 0)
{
+ /* If nfd begins at the prompt, or before the invisible
+ characters in the prompt, we need to adjust _rl_last_c_pos
+ in a multibyte locale to account for the wrap offset and
+ set cpos_adjusted accordingly. */
_rl_output_some_chars (nfd, temp);
! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
! {
! _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
! if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
! {
! _rl_last_c_pos -= wrap_offset;
! cpos_adjusted = 1;
! }
! }
! else
! _rl_last_c_pos += temp;
}
}
***************
*** 1608,1613 ****
--- 1622,1639 ----
if (temp > 0)
{
+ /* If nfd begins at the prompt, or before the invisible
+ characters in the prompt, we need to adjust _rl_last_c_pos
+ in a multibyte locale to account for the wrap offset and
+ set cpos_adjusted accordingly. */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp; /* XXX */
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ {
+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
+ {
+ _rl_last_c_pos -= wrap_offset;
+ cpos_adjusted = 1;
+ }
+ }
}
lendiff = (oe - old) - (ne - new);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 16
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 17
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,98 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-018
Bug-Reported-by: osicka@post.cz
Bug-Reference-ID: <228.177-19682-1132061412-1179356692@post.cz>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00061.html
Bug-Description:
In certain cases, bash can lose the saved status of a background job, though
it should still be reported by `wait'. Bash can also loop infinitely after
creating and waiting for 4096 jobs.
Patch:
*** ../bash-20070510/jobs.c Thu Mar 8 16:05:50 2007
--- jobs.c Fri May 18 11:40:14 2007
***************
*** 784,792 ****
{
old = js.j_firstj++;
while (js.j_firstj != old)
{
if (js.j_firstj >= js.j_jobslots)
js.j_firstj = 0;
! if (jobs[js.j_firstj])
break;
js.j_firstj++;
--- 784,794 ----
{
old = js.j_firstj++;
+ if (old >= js.j_jobslots)
+ old = js.j_jobslots - 1;
while (js.j_firstj != old)
{
if (js.j_firstj >= js.j_jobslots)
js.j_firstj = 0;
! if (jobs[js.j_firstj] || js.j_firstj == old) /* needed if old == 0 */
break;
js.j_firstj++;
***************
*** 798,806 ****
{
old = js.j_lastj--;
while (js.j_lastj != old)
{
if (js.j_lastj < 0)
js.j_lastj = js.j_jobslots - 1;
! if (jobs[js.j_lastj])
break;
js.j_lastj--;
--- 800,810 ----
{
old = js.j_lastj--;
+ if (old < 0)
+ old = 0;
while (js.j_lastj != old)
{
if (js.j_lastj < 0)
js.j_lastj = js.j_jobslots - 1;
! if (jobs[js.j_lastj] || js.j_lastj == old) /* needed if old == js.j_jobslots */
break;
js.j_lastj--;
***************
*** 964,968 ****
realloc_jobs_list ();
! return (js.j_lastj);
}
--- 975,983 ----
realloc_jobs_list ();
! #ifdef DEBUG
! itrace("compact_jobs_list: returning %d", (js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
! #endif
!
! return ((js.j_lastj || jobs[js.j_lastj]) ? js.j_lastj + 1 : 0);
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 17
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 18
#endif /* _PATCHLEVEL_H_ */

343
src/patches/bash/bash32-019 Normal file
View File

@@ -0,0 +1,343 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-019
Bug-Reported-by: Thomas Loeber <ifp@loeber1.de>
Bug-Reference-ID: <200703082223.08919.ifp@loeber1.de>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00036.html
Bug-Description:
When rl_read_key returns -1, indicating that bash's controlling terminal
has been invalidated for some reason (e.g., receiving a SIGHUP), the error
status was not reported correctly to the caller. This could cause input
loops.
Patch:
*** ../bash-3.2-patched/lib/readline/complete.c Fri Jul 28 11:35:49 2006
--- lib/readline/complete.c Tue Mar 13 08:50:16 2007
***************
*** 429,433 ****
if (c == 'n' || c == 'N' || c == RUBOUT)
return (0);
! if (c == ABORT_CHAR)
_rl_abort_internal ();
if (for_pager && (c == NEWLINE || c == RETURN))
--- 440,444 ----
if (c == 'n' || c == 'N' || c == RUBOUT)
return (0);
! if (c == ABORT_CHAR || c < 0)
_rl_abort_internal ();
if (for_pager && (c == NEWLINE || c == RETURN))
*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006
--- lib/readline/input.c Wed May 2 16:07:59 2007
***************
*** 514,518 ****
int size;
{
! int mb_len = 0;
size_t mbchar_bytes_length;
wchar_t wc;
--- 522,526 ----
int size;
{
! int mb_len, c;
size_t mbchar_bytes_length;
wchar_t wc;
***************
*** 521,531 ****
memset(&ps, 0, sizeof (mbstate_t));
memset(&ps_back, 0, sizeof (mbstate_t));
!
while (mb_len < size)
{
RL_SETSTATE(RL_STATE_MOREINPUT);
! mbchar[mb_len++] = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
if (mbchar_bytes_length == (size_t)(-1))
--- 529,545 ----
memset(&ps, 0, sizeof (mbstate_t));
memset(&ps_back, 0, sizeof (mbstate_t));
!
! mb_len = 0;
while (mb_len < size)
{
RL_SETSTATE(RL_STATE_MOREINPUT);
! c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ break;
+
+ mbchar[mb_len++] = c;
+
mbchar_bytes_length = mbrtowc (&wc, mbchar, mb_len, &ps);
if (mbchar_bytes_length == (size_t)(-1))
***************
*** 565,569 ****
c = first;
memset (mb, 0, mlen);
! for (i = 0; i < mlen; i++)
{
mb[i] = (char)c;
--- 579,583 ----
c = first;
memset (mb, 0, mlen);
! for (i = 0; c >= 0 && i < mlen; i++)
{
mb[i] = (char)c;
*** ../bash-3.2-patched/lib/readline/isearch.c Mon Dec 26 17:18:53 2005
--- lib/readline/isearch.c Fri Mar 9 14:30:59 2007
***************
*** 328,333 ****
f = (rl_command_func_t *)NULL;
!
! /* Translate the keys we do something with to opcodes. */
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
{
--- 328,340 ----
f = (rl_command_func_t *)NULL;
!
! if (c < 0)
! {
! cxt->sflags |= SF_FAILED;
! cxt->history_pos = cxt->last_found_line;
! return -1;
! }
!
! /* Translate the keys we do something with to opcodes. */
if (c >= 0 && _rl_keymap[c].type == ISFUNC)
{
*** ../bash-3.2-patched/lib/readline/misc.c Mon Dec 26 17:20:46 2005
--- lib/readline/misc.c Fri Mar 9 14:44:11 2007
***************
*** 147,150 ****
--- 147,152 ----
rl_clear_message ();
RL_UNSETSTATE(RL_STATE_NUMERICARG);
+ if (key < 0)
+ return -1;
return (_rl_dispatch (key, _rl_keymap));
}
*** ../bash-3.2-patched/lib/readline/readline.c Wed Aug 16 15:00:36 2006
--- lib/readline/readline.c Fri Mar 9 14:47:24 2007
***************
*** 646,649 ****
--- 669,677 ----
{
nkey = _rl_subseq_getchar (cxt->okey);
+ if (nkey < 0)
+ {
+ _rl_abort_internal ();
+ return -1;
+ }
r = _rl_dispatch_subseq (nkey, cxt->dmap, cxt->subseq_arg);
cxt->flags |= KSEQ_DISPATCHED;
*** ../bash-3.2-patched/lib/readline/text.c Fri Jul 28 11:55:27 2006
--- lib/readline/text.c Sun Mar 25 13:41:38 2007
***************
*** 858,861 ****
--- 864,870 ----
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+
#if defined (HANDLE_SIGNALS)
if (RL_ISSTATE (RL_STATE_CALLBACK) == 0)
***************
*** 1521,1524 ****
--- 1530,1536 ----
mb_len = _rl_read_mbchar (mbchar, MB_LEN_MAX);
+ if (mb_len <= 0)
+ return -1;
+
if (count < 0)
return (_rl_char_search_internal (-count, bdir, mbchar, mb_len));
***************
*** 1537,1540 ****
--- 1549,1555 ----
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+
if (count < 0)
return (_rl_char_search_internal (-count, bdir, c));
*** ../bash-3.2-patched/lib/readline/vi_mode.c Sat Jul 29 16:42:28 2006
--- lib/readline/vi_mode.c Fri Mar 9 15:02:11 2007
***************
*** 887,890 ****
--- 887,897 ----
c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+
+ if (c < 0)
+ {
+ *nextkey = 0;
+ return -1;
+ }
+
*nextkey = c;
***************
*** 903,906 ****
--- 910,918 ----
c = rl_read_key (); /* real command */
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ {
+ *nextkey = 0;
+ return -1;
+ }
*nextkey = c;
}
***************
*** 1225,1236 ****
_rl_callback_generic_arg *data;
{
#if defined (HANDLE_MULTIBYTE)
! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
#else
RL_SETSTATE(RL_STATE_MOREINPUT);
! _rl_vi_last_search_char = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
#endif
_rl_callback_func = 0;
_rl_want_redisplay = 1;
--- 1243,1262 ----
_rl_callback_generic_arg *data;
{
+ int c;
#if defined (HANDLE_MULTIBYTE)
! c = _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
#else
RL_SETSTATE(RL_STATE_MOREINPUT);
! c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
#endif
+ if (c <= 0)
+ return -1;
+
+ #if !defined (HANDLE_MULTIBYTE)
+ _rl_vi_last_search_char = c;
+ #endif
+
_rl_callback_func = 0;
_rl_want_redisplay = 1;
***************
*** 1248,1251 ****
--- 1274,1278 ----
int count, key;
{
+ int c;
#if defined (HANDLE_MULTIBYTE)
static char *target;
***************
*** 1294,1302 ****
{
#if defined (HANDLE_MULTIBYTE)
! _rl_vi_last_search_mblen = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
#else
RL_SETSTATE(RL_STATE_MOREINPUT);
! _rl_vi_last_search_char = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
#endif
}
--- 1321,1335 ----
{
#if defined (HANDLE_MULTIBYTE)
! c = _rl_read_mbchar (_rl_vi_last_search_mbchar, MB_LEN_MAX);
! if (c <= 0)
! return -1;
! _rl_vi_last_search_mblen = c;
#else
RL_SETSTATE(RL_STATE_MOREINPUT);
! c = rl_read_key ();
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+ _rl_vi_last_search_char = c;
#endif
}
***************
*** 1468,1471 ****
--- 1501,1507 ----
RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ if (c < 0)
+ return -1;
+
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
***************
*** 1486,1489 ****
--- 1522,1528 ----
_rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ if (c < 0)
+ return -1;
+
_rl_callback_func = 0;
_rl_want_redisplay = 1;
***************
*** 1517,1520 ****
--- 1556,1562 ----
_rl_vi_last_replacement = c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
+ if (c < 0)
+ return -1;
+
return (_rl_vi_change_char (count, c, mb));
}
***************
*** 1651,1655 ****
RL_UNSETSTATE(RL_STATE_MOREINPUT);
! if (ch < 'a' || ch > 'z')
{
rl_ding ();
--- 1693,1697 ----
RL_UNSETSTATE(RL_STATE_MOREINPUT);
! if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
{
rl_ding ();
***************
*** 1703,1707 ****
return 0;
}
! else if (ch < 'a' || ch > 'z')
{
rl_ding ();
--- 1745,1749 ----
return 0;
}
! else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
{
rl_ding ();
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 18
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 19
#endif /* _PATCHLEVEL_H_ */

183
src/patches/bash/bash32-020 Normal file
View File

@@ -0,0 +1,183 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-020
Bug-Reported-by: Ian A Watson <WATSON_IAN_A@LILLY.COM>
Bug-Reference-ID: <OFEC551808.69D02C7F-ON8525729A.0045708D-8525729A.0046150B@EliLilly.lilly.com>
Bug-Reference-URL:
Bug-Description:
In some cases of error processing, a jump back to the top-level processing
loop from a builtin command would leave the shell in an inconsistent state.
Patch:
*** ../bash-3.2-patched/sig.c Wed Jan 25 14:57:59 2006
--- sig.c Sat Mar 10 11:11:30 2007
***************
*** 351,354 ****
--- 351,373 ----
#undef XHANDLER
+ /* Run some of the cleanups that should be performed when we run
+ jump_to_top_level from a builtin command context. XXX - might want to
+ also call reset_parser here. */
+ void
+ top_level_cleanup ()
+ {
+ /* Clean up string parser environment. */
+ while (parse_and_execute_level)
+ parse_and_execute_cleanup ();
+
+ #if defined (PROCESS_SUBSTITUTION)
+ unlink_fifo_list ();
+ #endif /* PROCESS_SUBSTITUTION */
+
+ run_unwind_protects ();
+ loop_level = continuing = breaking = 0;
+ return_catch_flag = 0;
+ }
+
/* What to do when we've been interrupted, and it is safe to handle it. */
void
*** ../bash-3.2-patched/sig.h Wed Jan 25 14:50:27 2006
--- sig.h Sat Mar 10 11:14:18 2007
***************
*** 122,125 ****
--- 122,126 ----
extern void initialize_terminating_signals __P((void));
extern void reset_terminating_signals __P((void));
+ extern void top_level_cleanup __P((void));
extern void throw_to_top_level __P((void));
extern void jump_to_top_level __P((int)) __attribute__((__noreturn__));
*** ../bash-3.2-patched/builtins/common.c Tue Apr 3 16:47:13 2007
--- builtins/common.c Mon Apr 30 15:01:33 2007
***************
*** 132,135 ****
--- 132,136 ----
{
builtin_error (_("too many arguments"));
+ top_level_cleanup ();
jump_to_top_level (DISCARD);
}
***************
*** 396,400 ****
throw_to_top_level ();
else
! jump_to_top_level (DISCARD);
}
no_args (list->next);
--- 410,417 ----
throw_to_top_level ();
else
! {
! top_level_cleanup ();
! jump_to_top_level (DISCARD);
! }
}
no_args (list->next);
*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
--- subst.c Tue Jul 17 09:45:11 2007
***************
*** 1279,1283 ****
if (no_longjmp_on_fatal_error == 0)
{ /* { */
! report_error ("bad substitution: no closing `%s' in %s", "}", string);
last_command_exit_value = EXECUTION_FAILURE;
exp_jump_to_top_level (DISCARD);
--- 1290,1294 ----
if (no_longjmp_on_fatal_error == 0)
{ /* { */
! report_error (_("bad substitution: no closing `%s' in %s"), "}", string);
last_command_exit_value = EXECUTION_FAILURE;
exp_jump_to_top_level (DISCARD);
***************
*** 7662,7665 ****
--- 7706,7711 ----
expand_no_split_dollar_star = 0; /* XXX */
expanding_redir = 0;
+
+ top_level_cleanup (); /* from sig.c */
jump_to_top_level (v);
***************
*** 7880,7884 ****
{
report_error (_("no match: %s"), tlist->word->word);
! jump_to_top_level (DISCARD);
}
else if (allow_null_glob_expansion == 0)
--- 7927,7931 ----
{
report_error (_("no match: %s"), tlist->word->word);
! exp_jump_to_top_level (DISCARD);
}
else if (allow_null_glob_expansion == 0)
*** ../bash-3.2-patched/arrayfunc.c Thu Jul 27 09:37:59 2006
--- arrayfunc.c Thu May 31 11:55:46 2007
***************
*** 619,622 ****
--- 619,624 ----
{
last_command_exit_value = EXECUTION_FAILURE;
+
+ top_level_cleanup ();
jump_to_top_level (DISCARD);
}
*** ../bash-3.2-patched/expr.c Wed Dec 28 17:47:03 2005
--- expr.c Tue Apr 24 14:17:59 2007
***************
*** 930,933 ****
--- 930,934 ----
{
expr_unwind ();
+ top_level_cleanup ();
jump_to_top_level (DISCARD);
}
*** ../bash-3.2-patched/variables.c Fri Sep 8 13:33:32 2006
--- variables.c Tue Jul 17 09:54:59 2007
***************
*** 1822,1830 ****
lval = evalexp (oval, &expok); /* ksh93 seems to do this */
if (expok == 0)
! jump_to_top_level (DISCARD);
}
rval = evalexp (value, &expok);
if (expok == 0)
! jump_to_top_level (DISCARD);
if (flags & ASS_APPEND)
rval += lval;
--- 1855,1869 ----
lval = evalexp (oval, &expok); /* ksh93 seems to do this */
if (expok == 0)
! {
! top_level_cleanup ();
! jump_to_top_level (DISCARD);
! }
}
rval = evalexp (value, &expok);
if (expok == 0)
! {
! top_level_cleanup ();
! jump_to_top_level (DISCARD);
! }
if (flags & ASS_APPEND)
rval += lval;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 19
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 20
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,72 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-021
Bug-Reported-by: BAGSHAW Paul RD-TECH-REN <paul.bagshaw@orange-ftgroup.com>
Bug-Reference-ID: <941BA0BF46DB8F4983FF7C8AFE800BC205EA7D4B@ftrdmel3.rd.francetelecom.fr>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-03/msg00065.html
Bug-Description:
When the parser read a backslash-escaped character that would be treated
internally as an escape, it would double the number of escape characters.
Patch:
*** ../bash-3.2-patched/parse.y Mon Oct 30 17:22:00 2006
--- parse.y Sat Mar 24 17:13:20 2007
***************
*** 3377,3381 ****
{
pass_next_character = 0;
! goto got_character;
}
--- 3377,3381 ----
{
pass_next_character = 0;
! goto got_escaped_character;
}
***************
*** 3651,3660 ****
got_character:
- all_digit_token &= DIGIT (character);
- dollar_present |= character == '$';
-
if (character == CTLESC || character == CTLNUL)
token[token_index++] = CTLESC;
token[token_index++] = character;
--- 3651,3662 ----
got_character:
if (character == CTLESC || character == CTLNUL)
token[token_index++] = CTLESC;
+ got_escaped_character:
+
+ all_digit_token &= DIGIT (character);
+ dollar_present |= character == '$';
+
token[token_index++] = character;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 20
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 21
#endif /* _PATCHLEVEL_H_ */

126
src/patches/bash/bash32-022 Normal file
View File

@@ -0,0 +1,126 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-022
Bug-Reported-by: Chet Ramey <chet.ramey@cwru.edu>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
POSIX specifies that the `read' builtin invoked from an interative shell
must prompt with $PS2 when a line is continued using a backslash while
reading from a terminal.
Patch:
*** ../bash-3.2-patched/builtins/read.def Tue Sep 19 08:45:48 2006
--- builtins/read.def Thu May 24 16:03:30 2007
***************
*** 128,133 ****
{
register char *varname;
! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code;
! int input_is_tty, input_is_pipe, unbuffered_read;
int raw, edit, nchars, silent, have_timeout, fd;
unsigned int tmout;
--- 131,136 ----
{
register char *varname;
! int size, i, nr, pass_next, saw_escape, eof, opt, retval, code, print_ps2;
! int input_is_tty, input_is_pipe, unbuffered_read, skip_ctlesc, skip_ctlnul;
int raw, edit, nchars, silent, have_timeout, fd;
unsigned int tmout;
***************
*** 135,139 ****
char c;
char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
! char *e, *t, *t1;
struct stat tsb;
SHELL_VAR *var;
--- 138,142 ----
char c;
char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
! char *e, *t, *t1, *ps2;
struct stat tsb;
SHELL_VAR *var;
***************
*** 149,152 ****
--- 152,156 ----
USE_VAR(i);
USE_VAR(pass_next);
+ USE_VAR(print_ps2);
USE_VAR(saw_escape);
USE_VAR(input_is_pipe);
***************
*** 164,167 ****
--- 168,172 ----
#endif
USE_VAR(list);
+ USE_VAR(ps2);
i = 0; /* Index into the string that we are reading. */
***************
*** 387,391 ****
#endif
! for (eof = retval = 0;;)
{
#if defined (READLINE)
--- 394,399 ----
#endif
! ps2 = 0;
! for (print_ps2 = eof = retval = 0;;)
{
#if defined (READLINE)
***************
*** 413,416 ****
--- 421,433 ----
#endif
+ if (print_ps2)
+ {
+ if (ps2 == 0)
+ ps2 = get_string_value ("PS2");
+ fprintf (stderr, "%s", ps2 ? ps2 : "");
+ fflush (stderr);
+ print_ps2 = 0;
+ }
+
if (unbuffered_read)
retval = zread (fd, &c, 1);
***************
*** 441,445 ****
pass_next = 0;
if (c == '\n')
! i--; /* back up over the CTLESC */
else
goto add_char;
--- 458,466 ----
pass_next = 0;
if (c == '\n')
! {
! i--; /* back up over the CTLESC */
! if (interactive && input_is_tty && raw == 0)
! print_ps2 = 1;
! }
else
goto add_char;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 21
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 22
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,51 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-023
Bug-Reported-by: Chet Ramey <chet.ramey@cwru.edu>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
When an error occurs during the pattern removal word expansion, the shell
can free unallocated memory or free memory multiple times.
Patch:
*** ../bash-3.2-patched/subst.c Tue Apr 3 16:47:19 2007
--- subst.c Tue Jul 17 09:45:11 2007
***************
*** 3975,3979 ****
patstr++;
! pattern = getpattern (patstr, quoted, 1);
temp1 = (char *)NULL; /* shut up gcc */
--- 4008,4016 ----
patstr++;
! /* Need to pass getpattern newly-allocated memory in case of expansion --
! the expansion code will free the passed string on an error. */
! temp1 = savestring (patstr);
! pattern = getpattern (temp1, quoted, 1);
! free (temp1);
temp1 = (char *)NULL; /* shut up gcc */
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 22
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 23
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,77 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-024
Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
Bug-Reference-ID: <1178376645.9063.25.camel@localhost>
Bug-Reference-URL: http://bugs.gentoo.org/177095
Bug-Description:
The readline display code miscalculated the screen position when performing
a redisplay in which the new text occupies more screen space that the old,
but takes fewer bytes to do so (e.g., when replacing a shorter string
containing multibyte characters with a longer one containing only ASCII).
Patch:
*** ../bash-3.2-patched/lib/readline/display.c Thu Apr 26 11:38:22 2007
--- lib/readline/display.c Thu Jul 12 23:10:10 2007
***************
*** 1519,1527 ****
/* Non-zero if we're increasing the number of lines. */
int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
/* Sometimes it is cheaper to print the characters rather than
use the terminal's capabilities. If we're growing the number
of lines, make sure we actually cause the new line to wrap
around on auto-wrapping terminals. */
! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
{
/* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
--- 1568,1596 ----
/* Non-zero if we're increasing the number of lines. */
int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+ /* If col_lendiff is > 0, implying that the new string takes up more
+ screen real estate than the old, but lendiff is < 0, meaning that it
+ takes fewer bytes, we need to just output the characters starting
+ from the first difference. These will overwrite what is on the
+ display, so there's no reason to do a smart update. This can really
+ only happen in a multibyte environment. */
+ if (lendiff < 0)
+ {
+ _rl_output_some_chars (nfd, temp);
+ _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
+ /* If nfd begins before any invisible characters in the prompt,
+ adjust _rl_last_c_pos to account for wrap_offset and set
+ cpos_adjusted to let the caller know. */
+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
+ {
+ _rl_last_c_pos -= wrap_offset;
+ cpos_adjusted = 1;
+ }
+ return;
+ }
/* Sometimes it is cheaper to print the characters rather than
use the terminal's capabilities. If we're growing the number
of lines, make sure we actually cause the new line to wrap
around on auto-wrapping terminals. */
! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
{
/* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 23
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 24
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,79 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-025
Bug-Reported-by: Tom Bjorkholm <tom.bjorkholm@ericsson.com>
Bug-Reference-ID: <AEA1A32F001C6B4F98614B5B80D7647D01C075E9@esealmw115.eemea.ericsson.se>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-04/msg00004.html
Bug-Description:
An off-by-one error in readline's input buffering caused readline to drop
each 511th character of buffered input (e.g., when pasting a large amount
of data into a terminal window).
Patch:
*** ../bash-3.2-patched/lib/readline/input.c Wed Aug 16 15:15:16 2006
--- lib/readline/input.c Tue Jul 17 09:24:21 2007
***************
*** 134,139 ****
*key = ibuffer[pop_index++];
!
if (pop_index >= ibuffer_len)
pop_index = 0;
--- 134,142 ----
*key = ibuffer[pop_index++];
! #if 0
if (pop_index >= ibuffer_len)
+ #else
+ if (pop_index > ibuffer_len)
+ #endif
pop_index = 0;
***************
*** 251,255 ****
{
k = (*rl_getc_function) (rl_instream);
! rl_stuff_char (k);
if (k == NEWLINE || k == RETURN)
break;
--- 254,259 ----
{
k = (*rl_getc_function) (rl_instream);
! if (rl_stuff_char (k) == 0)
! break; /* some problem; no more room */
if (k == NEWLINE || k == RETURN)
break;
***************
*** 374,378 ****
--- 378,386 ----
}
ibuffer[push_index++] = key;
+ #if 0
if (push_index >= ibuffer_len)
+ #else
+ if (push_index > ibuffer_len)
+ #endif
push_index = 0;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 24
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 25
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,82 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-026
Bug-Reported-by: Chet Ramey <chet.ramey@case.edu>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
This keeps the Apple linker from attempting to link bash against Apple's
readline library "replacement" rather than the one shipped with bash. It
extends the configure workaround to Mac OS X Leopard (10.5).
As a side effect, the patch updates the copyright date displayed in the
version string.
You must re-run configure after applying the patch, and before rebuilding
bash.
Patch:
*** ../bash-3.2-patched/configure.in 2007-03-06 11:07:38.000000000 -0500
--- configure.in 2007-11-23 15:37:41.000000000 -0500
***************
*** 519,523 ****
# dynamic version
case "${host_os}" in
! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
--- 519,523 ----
# dynamic version
case "${host_os}" in
! darwin[[89]]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
*** ../bash-3.2-patched/configure 2007-03-24 14:51:22.000000000 -0400
--- configure 2007-11-23 15:46:15.000000000 -0500
***************
*** 4872,4876 ****
# dynamic version
case "${host_os}" in
! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
--- 4872,4876 ----
# dynamic version
case "${host_os}" in
! darwin[89]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
*** ../bash-3.2-patched/version.c 2005-05-16 11:58:34.000000000 -0400
--- version.c 2007-11-23 16:03:40.000000000 -0500
***************
*** 80,83 ****
printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
if (extended)
! printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n"));
}
--- 80,83 ----
printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
if (extended)
! printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n"));
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 25
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 26
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,85 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-027
Bug-Reported-by: dAniel hAhler <ubuntu@thequod.de>
Bug-Reference-ID: <4702ED8A.5000503@thequod.de>
Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938
Bug-Description:
When updating the display after displaying, for instance, a list of possible
completions, readline will place the cursor at the wrong position if the
prompt contains invisible characters and a newline.
Patch:
*** ../bash-3.2.25/lib/readline/display.c Mon Aug 6 14:26:29 2007
--- lib/readline/display.c Wed Oct 10 22:43:58 2007
***************
*** 1049,1053 ****
else
tx = nleft;
! if (_rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
--- 1049,1053 ----
else
tx = nleft;
! if (tx >= 0 && _rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
***************
*** 1205,1209 ****
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd;
int current_invis_chars;
int col_lendiff, col_temp;
--- 1205,1209 ----
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd, o_cpos;
int current_invis_chars;
int col_lendiff, col_temp;
***************
*** 1466,1469 ****
--- 1466,1471 ----
}
+ o_cpos = _rl_last_c_pos;
+
/* When this function returns, _rl_last_c_pos is correct, and an absolute
cursor postion in multibyte mode, but a buffer index when not in a
***************
*** 1475,1479 ****
invisible characters in the prompt string. Let's see if setting this when
we make sure we're at the end of the drawn prompt string works. */
! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars)
cpos_adjusted = 1;
#endif
--- 1477,1483 ----
invisible characters in the prompt string. Let's see if setting this when
we make sure we're at the end of the drawn prompt string works. */
! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 &&
! (_rl_last_c_pos > 0 || o_cpos > 0) &&
! _rl_last_c_pos == prompt_physical_chars)
cpos_adjusted = 1;
#endif
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 26
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 27
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,60 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-028
Bug-Reported-by: dAniel hAhler <ubuntu@thequod.de>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
Under some circumstances, readline will incorrectly display a prompt string
containing invisible characters after the final newline.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
***************
*** 392,396 ****
local_prompt = expand_prompt (p, &prompt_visible_length,
&prompt_last_invisible,
! (int *)NULL,
&prompt_physical_chars);
c = *t; *t = '\0';
--- 420,424 ----
local_prompt = expand_prompt (p, &prompt_visible_length,
&prompt_last_invisible,
! &prompt_invis_chars_first_line,
&prompt_physical_chars);
c = *t; *t = '\0';
***************
*** 399,403 ****
local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
(int *)NULL,
! &prompt_invis_chars_first_line,
(int *)NULL);
*t = c;
--- 427,431 ----
local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
(int *)NULL,
! (int *)NULL,
(int *)NULL);
*t = c;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 27
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 28
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,52 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-029
Bug-Reported-by: Tomas Janousek <tjanouse@redhat.com>
Bug-Reference-ID: <20071102104034.GA26893@redhat.com>
Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=286861
Bug-Description:
When the bash arithmetic expression evaluator has temporarily turned off
evalation, such as when parsing a pre- or post-decrement or -increment
operator, and an error occurs, evaluation is not re-enabled.
Patch:
*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400
--- expr.c 2007-10-18 08:08:44.000000000 -0400
***************
*** 287,290 ****
--- 287,292 ----
}
free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */
+
+ noeval = 0; /* XXX */
}
***************
*** 320,323 ****
--- 322,326 ----
val = 0;
+ noeval = 0;
FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf));
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 28
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,50 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-030
Bug-Reported-by: Paul Eggert <eggert@cs.ucla.edu> Andreas Schwab <schwab@suse.de>
Bug-Reference-ID: <877il0nu84.fsf_-_@penguin.cs.ucla.edu> <m28x5gparz.fsf@igel.home>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.html
Bug-Description:
If redirections attached to a compound command fail, bash does not set the
command's exit status correctly. This only happens when the command is the
first in a sequential list.
Patch:
*** ../bash-3.2-patched/execute_cmd.c 2007-03-24 14:51:05.000000000 -0400
--- execute_cmd.c 2007-11-05 22:31:14.000000000 -0500
***************
*** 615,619 ****
redirection_undo_list = (REDIRECT *)NULL;
dispose_exec_redirects ();
! return (EXECUTION_FAILURE);
}
--- 620,624 ----
redirection_undo_list = (REDIRECT *)NULL;
dispose_exec_redirects ();
! return (last_command_exit_value = EXECUTION_FAILURE);
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,62 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-031
Bug-Reported-by: Miroslav Lichvar <mlichvar@redhat.com>
Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html
Bug-Description:
In certain cases when outputting characters at the end of the line,
e.g., when displaying the prompt string, readline positions the cursor
incorrectly if the prompt string contains invisible characters and the
text being drawn begins before the last invisible character in the line.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
***************
*** 1566,1574 ****
else
{
- /* We have horizontal scrolling and we are not inserting at
- the end. We have invisible characters in this line. This
- is a dumb update. */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
return;
}
--- 1619,1632 ----
else
{
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
+ /* If nfd begins before any invisible characters in the prompt,
+ adjust _rl_last_c_pos to account for wrap_offset and set
+ cpos_adjusted to let the caller know. */
+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
+ {
+ _rl_last_c_pos -= wrap_offset;
+ cpos_adjusted = 1;
+ }
return;
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-032
Bug-Reported-by: Uwe Doering <gemini@geminix.org>
Bug-Reference-ID: <46F3DD72.2090801@geminix.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html
Bug-Description:
There is an off-by-one error in the code that buffers characters received
very quickly in succession, causing characters to be dropped.
Patch:
*** ../bash-3.2-patched/lib/readline/input.c 2007-08-25 13:47:10.000000000 -0400
--- lib/readline/input.c 2007-10-12 22:55:25.000000000 -0400
***************
*** 155,159 ****
pop_index--;
if (pop_index < 0)
! pop_index = ibuffer_len - 1;
ibuffer[pop_index] = key;
return (1);
--- 155,159 ----
pop_index--;
if (pop_index < 0)
! pop_index = ibuffer_len;
ibuffer[pop_index] = key;
return (1);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,88 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-033
Bug-Reported-by: Christophe Martin <schplurtz@free.fr>
Bug-Reference-ID: <465ABA4A.3030805@free.fr>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html
Bug-Description:
References made within a function to an uninitialized local array variable
using the [*] subscript in a double-quoted string can result in spurious
ASCII 127 characters in the expanded value.
Patch:
*** ../bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400
--- arrayfunc.c 2007-05-31 11:55:46.000000000 -0400
***************
*** 723,727 ****
{
if (rtype)
! *rtype = 1;
if (allow_all == 0)
{
--- 723,727 ----
{
if (rtype)
! *rtype = (t[0] == '*') ? 1 : 2;
if (allow_all == 0)
{
*** ../bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400
--- subst.c 2007-11-14 15:43:00.000000000 -0500
***************
*** 4908,4915 ****
intmax_t arg_index;
SHELL_VAR *var;
! int atype;
ret = 0;
temp = 0;
/* Handle multiple digit arguments, as in ${11}. */
--- 4973,4981 ----
intmax_t arg_index;
SHELL_VAR *var;
! int atype, rflags;
ret = 0;
temp = 0;
+ rflags = 0;
/* Handle multiple digit arguments, as in ${11}. */
***************
*** 4944,4947 ****
--- 5010,5015 ----
? quote_string (temp)
: quote_escapes (temp);
+ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+ rflags |= W_HASQUOTEDNULL;
}
#endif
***************
*** 4971,4974 ****
--- 5039,5043 ----
ret = alloc_word_desc ();
ret->word = temp;
+ ret->flags |= rflags;
}
return ret;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 33
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,74 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-034
Bug-Reported-by: Ian Campbell <ian.campbell@xensource.com>
Bug-Reference-ID: <EXCHPAFExU3l5bhn1ow00001dfe@rpc.xensource.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-10/msg00060.html
Bug-Description:
The bash getcwd replacement will write past the end of allocated memory
when it allocates the buffer itself if it uses the buffer size passed as
an argument, and that size is less than the length of the pathname.
Patch:
*** ../bash-3.2-patched/lib/sh/getcwd.c 2004-07-21 17:15:19.000000000 -0400
--- lib/sh/getcwd.c 2007-12-31 19:26:36.000000000 -0500
***************
*** 252,268 ****
{
size_t len = pathbuf + pathsize - pathp;
if (buf == NULL)
{
! if (len < (size_t) size)
! len = size;
! buf = (char *) malloc (len);
if (buf == NULL)
goto lose2;
}
! else if ((size_t) size < len)
! {
! errno = ERANGE;
! goto lose2;
! }
(void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
}
--- 287,305 ----
{
size_t len = pathbuf + pathsize - pathp;
+ if (buf == NULL && size <= 0)
+ size = len;
+
+ if ((size_t) size < len)
+ {
+ errno = ERANGE;
+ goto lose2;
+ }
if (buf == NULL)
{
! buf = (char *) malloc (size);
if (buf == NULL)
goto lose2;
}
!
(void) memcpy((PTR_T) buf, (PTR_T) pathp, len);
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 33
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 34
#endif /* _PATCHLEVEL_H_ */

159
src/patches/bash/bash32-035 Normal file
View File

@@ -0,0 +1,159 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-035
Bug-Reported-by: Ingo Molnar <mingo@elte.hu>
Bug-Reference-ID: <20071205202901.GA25202@elte.hu>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-12/msg00014.html
Bug-Description:
Bash incorrectly puts the second and subsequent children spawned by a
shell forked to run a command substitution in the wrong process group.
Patch:
*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500
--- subst.c 2008-01-17 22:48:15.000000000 -0500
***************
*** 4621,4627 ****
#if defined (JOB_CONTROL)
set_sigchld_handler ();
stop_making_children ();
! pipeline_pgrp = old_pipeline_pgrp;
#else
stop_making_children ();
--- 4721,4728 ----
#if defined (JOB_CONTROL)
set_sigchld_handler ();
stop_making_children ();
! if (pid != 0)
! pipeline_pgrp = old_pipeline_pgrp;
#else
stop_making_children ();
*** ../bash-3.2-patched/jobs.c 2007-08-25 13:46:59.000000000 -0400
--- jobs.c 2007-12-08 16:47:43.000000000 -0500
***************
*** 251,254 ****
--- 251,255 ----
static int set_job_status_and_cleanup __P((int));
+ static WAIT job_signal_status __P((int));
static WAIT raw_job_exit_status __P((int));
***************
*** 2220,2223 ****
--- 2238,2261 ----
}
+ static WAIT
+ job_signal_status (job)
+ int job;
+ {
+ register PROCESS *p;
+ WAIT s;
+
+ p = jobs[job]->pipe;
+ do
+ {
+ s = p->status;
+ if (WIFSIGNALED(s) || WIFSTOPPED(s))
+ break;
+ p = p->next;
+ }
+ while (p != jobs[job]->pipe);
+
+ return s;
+ }
+
/* Return the exit status of the last process in the pipeline for job JOB.
This is the exit status of the entire job. */
***************
*** 2302,2310 ****
received, only if one of the jobs run is killed via SIGINT. If
job control is not set, the job will be run in the same pgrp as
! the shell, and the shell will see any signals the job gets. */
/* This is possibly a race condition -- should it go in stop_pipeline? */
wait_sigint_received = 0;
! if (job_control == 0)
{
old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
--- 2343,2354 ----
received, only if one of the jobs run is killed via SIGINT. If
job control is not set, the job will be run in the same pgrp as
! the shell, and the shell will see any signals the job gets. In
! fact, we want this set every time the waiting shell and the waited-
! for process are in the same process group, including command
! substitution. */
/* This is possibly a race condition -- should it go in stop_pipeline? */
wait_sigint_received = 0;
! if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
{
old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
***************
*** 2452,2464 ****
the last process in the pipeline. If no process exits due to a
signal, S is left as the status of the last job in the pipeline. */
! p = jobs[job]->pipe;
! do
! {
! s = p->status;
! if (WIFSIGNALED(s) || WIFSTOPPED(s))
! break;
! p = p->next;
! }
! while (p != jobs[job]->pipe);
if (WIFSIGNALED (s) || WIFSTOPPED (s))
--- 2496,2500 ----
the last process in the pipeline. If no process exits due to a
signal, S is left as the status of the last job in the pipeline. */
! s = job_signal_status (job);
if (WIFSIGNALED (s) || WIFSTOPPED (s))
***************
*** 2494,2497 ****
--- 2530,2551 ----
}
}
+ else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
+ {
+ /* If waiting for a job in a subshell started to do command
+ substitution, simulate getting and being killed by the SIGINT to
+ pass the status back to our parent. */
+ s = job_signal_status (job);
+
+ if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
+ {
+ UNBLOCK_CHILD (oset);
+ restore_sigint_handler ();
+ old_sigint_handler = set_signal_handler (SIGINT, SIG_DFL);
+ if (old_sigint_handler == SIG_IGN)
+ restore_sigint_handler ();
+ else
+ kill (getpid (), SIGINT);
+ }
+ }
/* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 34
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 35
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,44 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-036
Bug-Reported-by: Len Lattanzi <llattanzi@apple.com>
Bug-Reference-ID: <87493131-7AEC-4301-A684-E6CC6D06E3E1@apple.com>
Bug-Reference-URL:
Bug-Description:
When initializing a subshell, bash did not reset a sentinel keeping track
of the number of command substitutions, leading to an infinite loop if
an error was encountered in the subshell.
Patch:
*** ../bash-3.2-patched/execute_cmd.c 2007-12-13 22:31:14.000000000 -0500
--- execute_cmd.c 2007-12-20 08:52:34.000000000 -0500
***************
*** 3881,3884 ****
--- 3916,3921 ----
clear_unwind_protect_list (0);
+ /* XXX -- are there other things we should be resetting here? */
+ parse_and_execute_level = 0; /* nothing left to restore it */
/* We're no longer inside a shell function. */
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 35
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 36
#endif /* _PATCHLEVEL_H_ */

110
src/patches/bash/bash32-037 Normal file
View File

@@ -0,0 +1,110 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-037
Bug-Reported-by: jared r r spiegel <jrrs@iorek.ice-nine.org>
Bug-Reference-ID: <200801152201.m0FM1lDp021260@iorek.ice-nine.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-01/msg00049.html
Bug-Description:
Bash inappropriately evaluates command substitutions while expanding
directory names as part of command substitution.
Patch:
*** ../bash-3.2-patched/subst.c 2007-12-13 22:31:21.000000000 -0500
--- subst.c 2008-01-17 22:48:15.000000000 -0500
***************
*** 2815,2821 ****
to jump_to_top_level here so we don't endlessly loop. */
WORD_LIST *
! expand_prompt_string (string, quoted)
char *string;
int quoted;
{
WORD_LIST *value;
--- 2895,2902 ----
to jump_to_top_level here so we don't endlessly loop. */
WORD_LIST *
! expand_prompt_string (string, quoted, wflags)
char *string;
int quoted;
+ int wflags;
{
WORD_LIST *value;
***************
*** 2825,2829 ****
return ((WORD_LIST *)NULL);
! td.flags = 0;
td.word = savestring (string);
--- 2906,2910 ----
return ((WORD_LIST *)NULL);
! td.flags = wflags;
td.word = savestring (string);
*** ../bash-3.2-patched/subst.h 2007-03-24 14:51:05.000000000 -0400
--- subst.h 2008-01-17 22:46:08.000000000 -0500
***************
*** 136,140 ****
/* Expand a prompt string. */
! extern WORD_LIST *expand_prompt_string __P((char *, int));
/* Expand STRING just as if you were expanding a word. This also returns
--- 137,141 ----
/* Expand a prompt string. */
! extern WORD_LIST *expand_prompt_string __P((char *, int, int));
/* Expand STRING just as if you were expanding a word. This also returns
*** ../bash-3.2-patched/parse.y 2007-08-25 13:47:06.000000000 -0400
--- parse.y 2008-01-17 22:46:30.000000000 -0500
***************
*** 4367,4371 ****
{
last_exit_value = last_command_exit_value;
! list = expand_prompt_string (result, Q_DOUBLE_QUOTES);
free (result);
result = string_list (list);
--- 4367,4371 ----
{
last_exit_value = last_command_exit_value;
! list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0);
free (result);
result = string_list (list);
*** ../bash-3.2-patched/bashline.c 2006-07-29 16:39:30.000000000 -0400
--- bashline.c 2008-02-17 12:53:42.000000000 -0500
***************
*** 2358,2362 ****
{
new_dirname = savestring (local_dirname);
! wl = expand_prompt_string (new_dirname, 0); /* does the right thing */
if (wl)
{
--- 2376,2380 ----
{
new_dirname = savestring (local_dirname);
! wl = expand_prompt_string (new_dirname, 0, W_NOCOMSUB); /* does the right thing */
if (wl)
{
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 36
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 37
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,80 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-038
Bug-Reported-by: Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>
Bug-Reference-ID: <200803131141.m2DBf9vo001136@wojtek.tensor.gdynia.pl>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-03/msg00029.html
Bug-Description:
When reading input lines into a single variable using the `read' builtin,
bash did not free the memory it read after assigining it to the named
variable, causing a memory leak noticable when reading large amounts of
data.
Patch:
*** ../bash-3.2-patched/builtins/read.def 2007-08-25 13:47:07.000000000 -0400
--- builtins/read.def 2008-03-07 12:55:47.000000000 -0500
***************
*** 135,139 ****
char c;
char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
! char *e, *t, *t1, *ps2;
struct stat tsb;
SHELL_VAR *var;
--- 152,156 ----
char c;
char *input_string, *orig_input_string, *ifs_chars, *prompt, *arrayname;
! char *e, *t, *t1, *ps2, *tofree;
struct stat tsb;
SHELL_VAR *var;
***************
*** 675,678 ****
--- 728,732 ----
/* Check whether or not the number of fields is exactly the same as the
number of variables. */
+ tofree = NULL;
if (*input_string)
{
***************
*** 680,684 ****
t = get_word_from_string (&input_string, ifs_chars, &e);
if (*input_string == 0)
! input_string = t;
else
input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
--- 734,738 ----
t = get_word_from_string (&input_string, ifs_chars, &e);
if (*input_string == 0)
! tofree = input_string = t;
else
input_string = strip_trailing_ifs_whitespace (t1, ifs_chars, saw_escape);
***************
*** 695,698 ****
--- 749,754 ----
var = bind_read_variable (list->word->word, input_string);
stupidly_hack_special_variables (list->word->word);
+ FREE (tofree);
+
if (var)
VUNSETATTR (var, att_invisible);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 37
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 38
#endif /* _PATCHLEVEL_H_ */

175
src/patches/bash/bash32-039 Normal file
View File

@@ -0,0 +1,175 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-039
Bug-Reported-by: rew@erebor.com
Bug-Reference-ID: <20070119065603.546D011E9C@kansas.erebor.com>
Bug-Reference-URL:
Bug-Description:
Bash-3.2 changed the behavior of the [[ command's `=~' operator when the
right-hand side was quoted: it matched the quoted portions as strings.
This patch introduces a new shell option: compat31. When enabled, it
restores the bash-3.1 behavior with respect to evaluating quoted arguments
to the =~ operator.
Patch:
*** ../bash-3.2-patched/execute_cmd.c 2007-12-14 21:12:39.000000000 -0500
--- execute_cmd.c 2008-02-22 21:20:40.000000000 -0500
***************
*** 2547,2551 ****
if (arg1 == 0)
arg1 = nullstr;
! arg2 = cond_expand_word (cond->right->op, rmatch ? 2 : (patmatch ? 1 : 0));
if (arg2 == 0)
arg2 = nullstr;
--- 2552,2557 ----
if (arg1 == 0)
arg1 = nullstr;
! arg2 = cond_expand_word (cond->right->op,
! (rmatch && shell_compatibility_level > 31) ? 2 : (patmatch ? 1 : 0));
if (arg2 == 0)
arg2 = nullstr;
*** ../bash-3.2-patched/shell.h 2003-06-01 15:04:36.000000000 -0400
--- shell.h 2008-02-22 21:16:48.000000000 -0500
***************
*** 90,93 ****
--- 90,94 ----
extern int interactive, interactive_shell;
extern int startup_state;
+ extern int shell_compatibility_level;
/* Structure to pass around that holds a bitmap of file descriptors
*** ../bash-3.2-patched/version.c 2007-12-14 21:12:29.000000000 -0500
--- version.c 2008-04-10 08:22:22.000000000 -0400
***************
*** 44,47 ****
--- 44,50 ----
const char *sccs_version = SCCSVERSION;
+ /* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
+ int shell_compatibility_level = 32;
+
/* Functions for getting, setting, and displaying the shell version. */
*** ../bash-3.2-patched/builtins/shopt.def 2005-02-19 17:25:03.000000000 -0500
--- builtins/shopt.def 2008-04-10 08:13:32.000000000 -0400
***************
*** 102,105 ****
--- 102,107 ----
static int set_shellopts_after_change __P((int));
+ static int set_compatibility_level __P((int));
+
#if defined (RESTRICTED_SHELL)
static int set_restricted_shell __P((int));
***************
*** 107,110 ****
--- 109,113 ----
static int shopt_login_shell;
+ static int shopt_compat31;
typedef int shopt_set_func_t __P((int));
***************
*** 122,125 ****
--- 125,129 ----
{ "cmdhist", &command_oriented_history, (shopt_set_func_t *)NULL },
#endif
+ { "compat31", &shopt_compat31, set_compatibility_level },
{ "dotglob", &glob_dot_filenames, (shopt_set_func_t *)NULL },
{ "execfail", &no_exit_on_failed_exec, (shopt_set_func_t *)NULL },
***************
*** 460,463 ****
--- 464,479 ----
}
+ static int
+ set_compatibility_level (mode)
+ int mode;
+ {
+ /* Need to change logic here as we add more compatibility levels */
+ if (shopt_compat31)
+ shell_compatibility_level = 31;
+ else
+ shell_compatibility_level = 32;
+ return 0;
+ }
+
#if defined (RESTRICTED_SHELL)
/* Don't allow the value of restricted_shell to be modified. */
*** ../bash-3.2-patched/doc/bash.1 2006-09-28 10:26:05.000000000 -0400
--- doc/bash.1 2008-04-25 12:32:49.000000000 -0400
***************
*** 7978,7981 ****
--- 8200,8209 ----
easy re-editing of multi-line commands.
.TP 8
+ .B compat31
+ If set,
+ .B bash
+ changes its behavior to that of version 3.1 with respect to quoted
+ arguments to the conditional command's =~ operator.
+ .TP 8
.B dotglob
If set,
*** ../bash-20080214/doc/bashref.texi 2008-02-08 21:28:35.000000000 -0500
--- doc/bashref.texi 2008-02-22 21:44:51.000000000 -0500
***************
*** 4053,4056 ****
--- 4061,4069 ----
easy re-editing of multi-line commands.
+ @item compat31
+ If set, Bash
+ changes its behavior to that of version 3.1 with respect to quoted
+ arguments to the conditional command's =~ operator.
+
@item dotglob
If set, Bash includes filenames beginning with a `.' in
*** ../bash-3.2-patched/tests/shopt.right 2005-02-19 17:46:09.000000000 -0500
--- tests/shopt.right 2008-04-28 09:13:07.000000000 -0400
***************
*** 7,10 ****
--- 7,11 ----
shopt -u checkwinsize
shopt -s cmdhist
+ shopt -u compat31
shopt -u dotglob
shopt -u execfail
***************
*** 54,57 ****
--- 55,59 ----
shopt -u checkhash
shopt -u checkwinsize
+ shopt -u compat31
shopt -u dotglob
shopt -u execfail
***************
*** 78,81 ****
--- 80,84 ----
checkhash off
checkwinsize off
+ compat31 off
dotglob off
execfail off
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 38
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 39
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-040
Bug-Reported-by: John McCabe-Dansted
Bug-Reference-ID:
Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/202885
Bug-Description:
When using the `set' builtin to list all shell variables, the shell uses
the wrong variable when computing the length of a variable's value.
Patch:
*** ../bash-3.2-patched/array.c 2007-03-24 14:51:03.000000000 -0400
--- array.c 2008-08-17 13:07:04.000000000 -0400
***************
*** 684,688 ****
valstr = element_value (ae) ? sh_double_quote (element_value(ae))
: (char *)NULL;
! elen = STRLEN (indstr) + 8 + STRLEN (valstr);
RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
--- 809,813 ----
valstr = element_value (ae) ? sh_double_quote (element_value(ae))
: (char *)NULL;
! elen = STRLEN (is) + 8 + STRLEN (valstr);
RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 39
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 40
#endif /* _PATCHLEVEL_H_ */

154
src/patches/bash/bash32-041 Normal file
View File

@@ -0,0 +1,154 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-041
Bug-Reported-by: Dan Jacobson <jidanni@jidanni.org>
Bug-Reference-ID: <873arjs11h.fsf@jidanni.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-02/msg00049.html
Bug-Description:
Bash saved and restored the value of `set -o history' while sourcing files,
preventing users from turning off history with `set +o history' in .bashrc.
Patch:
*** ../bash-3.2-patched/bashhist.c 2005-12-26 13:31:16.000000000 -0500
--- bashhist.c 2008-08-17 13:07:40.000000000 -0400
***************
*** 81,84 ****
--- 81,85 ----
becomes zero when we read lines from a file, for example. */
int remember_on_history = 1;
+ int enable_history_list = 1; /* value for `set -o history' */
/* The number of lines that Bash has added to this history session. The
***************
*** 235,239 ****
history_expansion_inhibited = 1;
#endif
! remember_on_history = interact != 0;
history_inhibit_expansion_function = bash_history_inhibit_expansion;
}
--- 236,240 ----
history_expansion_inhibited = 1;
#endif
! remember_on_history = enable_history_list = interact != 0;
history_inhibit_expansion_function = bash_history_inhibit_expansion;
}
*** ../bash-3.2-patched/builtins/set.def 2006-07-27 09:41:43.000000000 -0400
--- builtins/set.def 2008-08-14 16:33:41.000000000 -0400
***************
*** 190,194 ****
#endif /* BANG_HISTORY */
#if defined (HISTORY)
! { "history", '\0', &remember_on_history, bash_set_history, (setopt_get_func_t *)NULL },
#endif
{ "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
--- 198,202 ----
#endif /* BANG_HISTORY */
#if defined (HISTORY)
! { "history", '\0', &enable_history_list, bash_set_history, (setopt_get_func_t *)NULL },
#endif
{ "ignoreeof", '\0', &ignoreeof, set_ignoreeof, (setopt_get_func_t *)NULL },
***************
*** 382,385 ****
--- 390,394 ----
if (on_or_off == FLAG_ON)
{
+ enable_history_list = 1;
bash_history_enable ();
if (history_lines_this_session == 0)
***************
*** 387,392 ****
}
else
! bash_history_disable ();
! return (1 - remember_on_history);
}
#endif
--- 396,404 ----
}
else
! {
! enable_history_list = 0;
! bash_history_disable ();
! }
! return (1 - enable_history_list);
}
#endif
***************
*** 566,570 ****
{
#if defined (HISTORY)
! remember_on_history = 1;
#endif
ignoreeof = 0;
--- 578,582 ----
{
#if defined (HISTORY)
! remember_on_history = enable_history_list = 1;
#endif
ignoreeof = 0;
*** ../bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400
--- builtins/evalstring.c 2008-11-10 21:17:16.000000000 -0500
***************
*** 68,71 ****
--- 68,79 ----
static int cat_file __P((REDIRECT *));
+ #if defined (HISTORY)
+ static void
+ set_history_remembering ()
+ {
+ remember_on_history = enable_history_list;
+ }
+ #endif
+
/* How to force parse_and_execute () to clean up after itself. */
void
***************
*** 116,120 ****
#if defined (HISTORY)
! unwind_protect_int (remember_on_history); /* can be used in scripts */
# if defined (BANG_HISTORY)
if (interactive_shell)
--- 124,131 ----
#if defined (HISTORY)
! if (parse_and_execute_level == 0)
! add_unwind_protect (set_history_remembering, (char *)NULL);
! else
! unwind_protect_int (remember_on_history); /* can be used in scripts */
# if defined (BANG_HISTORY)
if (interactive_shell)
*** ../bash-3.2-patched/bashhist.h 2005-07-01 15:44:41.000000000 -0400
--- bashhist.h 2008-08-17 12:51:07.000000000 -0400
***************
*** 32,35 ****
--- 32,38 ----
extern int remember_on_history;
+ extern int enable_history_list; /* value for `set -o history' */
+ extern int literal_history; /* controlled by `shopt lithist' */
+ extern int force_append_history;
extern int history_lines_this_session;
extern int history_lines_in_file;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 40
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 41
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,48 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-042
Bug-Reported-by: Archimerged Ark Submedes <archimerged@gmail.com>
Bug-Reference-ID: <5ba4bef00804182116g65ff71e0qdffcf672f205e708@mail.gmail.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-04/msg00041.html
Bug-Description:
An operator precedence error prevented the bash arithmetic evaluator from
parsing conditional commands correctly.
Patch:
*** ../bash-3.2-patched/expr.c 2007-12-13 22:30:43.000000000 -0500
--- expr.c 2008-08-17 13:09:59.000000000 -0400
***************
*** 521,525 ****
noeval++;
}
! val2 = explor ();
if (set_noeval)
noeval--;
--- 521,526 ----
noeval++;
}
!
! val2 = expcond ();
if (set_noeval)
noeval--;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 41
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 42
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,62 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-043
Bug-Reported-by: Morita Sho <morita-pub-en-debian@inz.sakura.ne.jp>
Bug-Reference-ID:
Bug-Reference-URL: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=478096
Bug-Description:
Side effects caused by setting function-local versions of variables bash
handles specially persisted after the function returned.
Patch:
*** ../bash-3.2-patched/variables.c 2007-08-25 13:47:05.000000000 -0400
--- variables.c 2008-11-09 17:47:31.000000000 -0500
***************
*** 3459,3465 ****
var->attributes &= ~(att_tempvar|att_propagate);
else
! shell_variables->flags |= VC_HASTMPVAR;
v->attributes |= var->attributes;
}
dispose_variable (var);
--- 3771,3779 ----
var->attributes &= ~(att_tempvar|att_propagate);
else
! shell_variables->flags |= VC_HASTMPVAR;
v->attributes |= var->attributes;
}
+ else
+ stupidly_hack_special_variables (var->name); /* XXX */
dispose_variable (var);
***************
*** 3548,3551 ****
--- 3862,3867 ----
v->attributes |= var->attributes;
}
+ else
+ stupidly_hack_special_variables (var->name); /* XXX */
dispose_variable (var);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 42
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 43
#endif /* _PATCHLEVEL_H_ */

150
src/patches/bash/bash32-044 Normal file
View File

@@ -0,0 +1,150 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-044
Bug-Reported-by: slinkp <stuff@slinkp.com>
Bug-Reference-ID: <da52a26a-9f38-4861-a918-14d3482b539d@c65g2000hsa.googlegroups.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-05/msg00085.html
Bug-Description:
The presence of invisible characters in a prompt longer than the screenwidth
with invisible characters on the first and last prompt lines caused readline
to place the cursor in the wrong physical location.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c 2007-12-14 21:12:40.000000000 -0500
--- lib/readline/display.c 2008-10-23 09:39:46.000000000 -0400
***************
*** 911,914 ****
--- 944,951 ----
OFFSET (which has already been calculated above). */
+ #define INVIS_FIRST() (prompt_physical_chars > _rl_screenwidth ? prompt_invis_chars_first_line : wrap_offset)
+ #define WRAP_OFFSET(line, offset) ((line == 0) \
+ ? (offset ? INVIS_FIRST() : 0) \
+ : ((line == prompt_last_screen_line) ? wrap_offset-prompt_invis_chars_first_line : 0))
#define W_OFFSET(line, offset) ((line) == 0 ? offset : 0)
#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
***************
*** 945,949 ****
_rl_last_c_pos > wrap_offset &&
o_cpos < prompt_last_invisible)
! _rl_last_c_pos -= wrap_offset;
/* If this is the line with the prompt, we might need to
--- 982,992 ----
_rl_last_c_pos > wrap_offset &&
o_cpos < prompt_last_invisible)
! _rl_last_c_pos -= prompt_invis_chars_first_line; /* XXX - was wrap_offset */
! else if (linenum == prompt_last_screen_line && prompt_physical_chars > _rl_screenwidth &&
! (MB_CUR_MAX > 1 && rl_byte_oriented == 0) &&
! cpos_adjusted == 0 &&
! _rl_last_c_pos != o_cpos &&
! _rl_last_c_pos > (prompt_last_invisible - _rl_screenwidth - prompt_invis_chars_first_line))
! _rl_last_c_pos -= (wrap_offset-prompt_invis_chars_first_line);
/* If this is the line with the prompt, we might need to
***************
*** 1205,1209 ****
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd, o_cpos;
int current_invis_chars;
int col_lendiff, col_temp;
--- 1264,1268 ----
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
int current_invis_chars;
int col_lendiff, col_temp;
***************
*** 1221,1225 ****
temp = _rl_last_c_pos;
else
! temp = _rl_last_c_pos - W_OFFSET(_rl_last_v_pos, visible_wrap_offset);
if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
&& _rl_last_v_pos == current_line - 1)
--- 1280,1284 ----
temp = _rl_last_c_pos;
else
! temp = _rl_last_c_pos - WRAP_OFFSET (_rl_last_v_pos, visible_wrap_offset);
if (temp == _rl_screenwidth && _rl_term_autowrap && !_rl_horizontal_scroll_mode
&& _rl_last_v_pos == current_line - 1)
***************
*** 1587,1599 ****
{
_rl_output_some_chars (nfd + lendiff, temp - lendiff);
- #if 1
/* XXX -- this bears closer inspection. Fixes a redisplay bug
reported against bash-3.0-alpha by Andreas Schwab involving
multibyte characters and prompt strings with invisible
characters, but was previously disabled. */
! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
! #else
! _rl_last_c_pos += _rl_col_width (nfd+lendiff, 0, temp-lendiff);
! #endif
}
}
--- 1648,1660 ----
{
_rl_output_some_chars (nfd + lendiff, temp - lendiff);
/* XXX -- this bears closer inspection. Fixes a redisplay bug
reported against bash-3.0-alpha by Andreas Schwab involving
multibyte characters and prompt strings with invisible
characters, but was previously disabled. */
! if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
! twidth = _rl_col_width (nfd+lendiff, 0, temp-col_lendiff);
! else
! twidth = temp - lendiff;
! _rl_last_c_pos += twidth;
}
}
***************
*** 1789,1793 ****
int cpos, dpos; /* current and desired cursor positions */
! woff = W_OFFSET (_rl_last_v_pos, wrap_offset);
cpos = _rl_last_c_pos;
#if defined (HANDLE_MULTIBYTE)
--- 1850,1854 ----
int cpos, dpos; /* current and desired cursor positions */
! woff = WRAP_OFFSET (_rl_last_v_pos, wrap_offset);
cpos = _rl_last_c_pos;
#if defined (HANDLE_MULTIBYTE)
***************
*** 1803,1807 ****
prompt string, since they're both buffer indices and DPOS is a
desired display position. */
! if (new > prompt_last_invisible) /* XXX - don't use woff here */
{
dpos -= woff;
--- 1864,1872 ----
prompt string, since they're both buffer indices and DPOS is a
desired display position. */
! if ((new > prompt_last_invisible) || /* XXX - don't use woff here */
! (prompt_physical_chars > _rl_screenwidth &&
! _rl_last_v_pos == prompt_last_screen_line &&
! wrap_offset != woff &&
! new > (prompt_last_invisible-_rl_screenwidth-wrap_offset)))
{
dpos -= woff;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 43
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 44
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,50 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-045
Bug-Reported-by: Roman Rakus <rrakus@redhat.com>
Bug-Reference-ID: <4864B4A0.1060402@redhat.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-06/msg00098.html
Bug-Description:
When short-circuiting execution due to the `break' or `continue' builtins,
bash did not preserve the value of $?.
Patch:
*** ../bash-3.2-patched/execute_cmd.c 2008-04-28 22:00:24.000000000 -0400
--- execute_cmd.c 2008-10-18 14:35:03.000000000 -0400
***************
*** 502,507 ****
--- 514,526 ----
volatile int save_line_number;
+ #if 0
if (command == 0 || breaking || continuing || read_but_dont_execute)
return (EXECUTION_SUCCESS);
+ #else
+ if (breaking || continuing)
+ return (last_command_exit_value);
+ if (command == 0 || read_but_dont_execute)
+ return (EXECUTION_SUCCESS);
+ #endif
QUIT;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 44
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 45
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-046
Bug-Reported-by: Wang Xin <wxinee@gmail.com>
Bug-Reference-ID: <9a73e1570807062042ide16698m10e1b18036c95592@mail.gmail.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-07/msg00014.html
Bug-Description:
Bash did not compute the length of multibyte characters correctly when
performing array element length references (e.g., ${#var[subscript]}).
Patch:
*** /usr/src/local/bash/bash-3.2-patched/subst.c 2008-04-28 22:00:20.000000000 -0400
--- subst.c 2008-11-10 22:02:38.000000000 -0500
***************
*** 4813,4817 ****
t = (ind == 0) ? value_cell (var) : (char *)NULL;
! len = STRLEN (t);
return (len);
}
--- 4813,4817 ----
t = (ind == 0) ? value_cell (var) : (char *)NULL;
! len = MB_STRLEN (t);
return (len);
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 45
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 46
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,65 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-047
Bug-Reported-by: Roman Rakus <rrakus@redhat.com>
Bug-Reference-ID: <48A89EBC.906@redhat.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-08/msg00026.html
Bug-Description:
When using the `.' (source) builtin, under certain circumstances bash was
too careful in discarding state to preserve internal consistency. One
effect was that assignments to readonly variables would cause entire scripts
to be aborted instead of execution of the offending command. This behavior
was introduced by bash-3.2 patch 20.
Patch:
*** /usr/src/local/chet/src/bash/bash-3.2-patched/subst.c 2008-04-29 21:24:55.000000000 -0400
--- subst.c 2008-11-13 17:44:25.000000000 -0500
***************
*** 138,142 ****
extern int last_command_exit_value, last_command_exit_signal;
extern int subshell_environment;
! extern int subshell_level;
extern int eof_encountered;
extern int return_catch_flag, return_catch_value;
--- 138,142 ----
extern int last_command_exit_value, last_command_exit_signal;
extern int subshell_environment;
! extern int subshell_level, parse_and_execute_level;
extern int eof_encountered;
extern int return_catch_flag, return_catch_value;
***************
*** 7673,7677 ****
expanding_redir = 0;
! top_level_cleanup (); /* from sig.c */
jump_to_top_level (v);
--- 7673,7679 ----
expanding_redir = 0;
! if (parse_and_execute_level == 0)
! top_level_cleanup (); /* from sig.c */
!
jump_to_top_level (v);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 46
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 47
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,56 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-048
Bug-Reported-by: Steffen Kiess <s-kiess@web.de>
Bug-Reference-ID: <1223929957.5383.6.camel@fips>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2008-10/msg00047.html
Bug-Description:
When invoked as `bash -c', bash did not execute an EXIT trap when the last
command in the executed list was a command run from the file system.
Patch:
*** /Users/chet/src/bash/bash-3.2-patched/builtins/evalstring.c 2006-07-28 15:12:16.000000000 -0400
--- builtins/evalstring.c 2008-11-13 18:38:45.000000000 -0500
***************
*** 249,252 ****
--- 249,253 ----
* we're not running a trap AND
* we have parsed the full command (string == '\0') AND
+ * we're not going to run the exit trap AND
* we have a simple command without redirections AND
* the command is not being timed AND
***************
*** 259,263 ****
*bash_input.location.string == '\0' &&
command->type == cm_simple &&
! !command->redirects && !command->value.Simple->redirects &&
((command->flags & CMD_TIME_PIPELINE) == 0) &&
((command->flags & CMD_INVERT_RETURN) == 0))
--- 260,265 ----
*bash_input.location.string == '\0' &&
command->type == cm_simple &&
! signal_is_trapped (EXIT_TRAP) == 0 &&
! command->redirects == 0 && command->value.Simple->redirects == 0 &&
((command->flags & CMD_TIME_PIPELINE) == 0) &&
((command->flags & CMD_INVERT_RETURN) == 0))
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 47
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 48
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,64 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-049
Bug-Reported-by: Len Lattanzi <llattanzi@apple.com>
Bug-Reference-ID: <52B1297F-6675-45CC-B63E-24745337D006@apple.com>
Bug-Reference-URL:
Bug-Description:
On systems where mbrtowc() returns -2 when passed a length argument with
value 0, when using a multibyte locale, Readline's emacs-mode forward-char
at the end of a line will leave the point beyond the end of the line.
Patch:
*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-05-29 23:09:26.000000000 -0400
--- lib/readline/mbutil.c 2009-05-29 23:10:12.000000000 -0400
***************
*** 78,82 ****
int seed, count, find_non_zero;
{
! size_t tmp;
mbstate_t ps;
int point;
--- 78,82 ----
int seed, count, find_non_zero;
{
! size_t tmp, len;
mbstate_t ps;
int point;
***************
*** 99,103 ****
while (count > 0)
{
! tmp = mbrtowc (&wc, string+point, strlen(string + point), &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
--- 99,106 ----
while (count > 0)
{
! len = strlen (string + point);
! if (len == 0)
! break;
! tmp = mbrtowc (&wc, string+point, len, &ps);
if (MB_INVALIDCH ((size_t)tmp))
{
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 48
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 49
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,56 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-050
Bug-Reported-by: Jan Hnatek <Jan.Hnatek@Sun.COM>
Bug-Reference-ID: <4A44991F.8010005@sun.com>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2009-06/msg00084.html
Bug-Description:
On systems where mbrtowc() returns -2 when passed a length argument with
value 0, when using a multibyte locale, Readline's emacs-mode forward-char
at the end of a line will leave the point beyond the end of the line.
Patch:
*** ../bash-3.2-patched/lib/readline/mbutil.c 2009-06-16 11:26:50.000000000 -0400
--- lib/readline/mbutil.c 2009-01-04 14:32:33.000000000 -0500
***************
*** 132,141 ****
{
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
! while (tmp > 0 && wcwidth (wc) == 0)
{
point += tmp;
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
- if (MB_NULLWCH (tmp) || MB_INVALIDCH (tmp))
- break;
}
}
--- 130,137 ----
{
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
! while (MB_NULLWCH (tmp) == 0 && MB_INVALIDCH (tmp) == 0 && wcwidth (wc) == 0)
{
point += tmp;
tmp = mbrtowc (&wc, string + point, strlen (string + point), &ps);
}
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 49
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 50
#endif /* _PATCHLEVEL_H_ */

View File

@@ -0,0 +1,46 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-051
Bug-Reported-by: werner@suse.de
Bug-Reference-ID: <201002251238.o1PCcYcg016893@boole.suse.de>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2010-02/msg00132.html
Bug-Description:
When the `read' builtin times out after the timeout specified with -t is
exceeded, it does not reset the flags that tell signal handlers to process
signals immediately instead of deferring their handling. This can result
in unsafe functions being called from signal handlers, which can cause bash
to hang or dump core.
Patch:
*** ../bash-3.2-patched/builtins/read.def 2008-04-29 21:25:00.000000000 -0400
--- builtins/read.def 2010-03-17 09:50:51.000000000 -0400
***************
*** 327,330 ****
--- 327,332 ----
if (code)
{
+ interrupt_immediately--;
+ terminate_immediately = 0;
run_unwind_frame ("read_builtin");
return (EXECUTION_FAILURE);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 50
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 51
#endif /* _PATCHLEVEL_H_ */

View File

@@ -1,19 +0,0 @@
Submitted By: Matt Burgess (matthew at linuxfromscratch dot org)
Date: 2007-11-19
Initial Package Version: 2.18
Origin: Upstream (http://sourceware.org/cgi-bin/cvsweb.cgi/src/configure.diff?r1=1.268&r2=1.268.2.1&cvsroot=src)
Upstream Status: Applied
Description: Fixes the configure script to correctly dictate Texinfo > 4.9.
diff -Naur binutils-2.18.orig/configure binutils-2.18/configure
--- binutils-2.18.orig/configure 2007-08-06 20:29:40.000000000 +0000
+++ binutils-2.18/configure 2007-11-18 22:37:58.000000000 +0000
@@ -6128,7 +6128,7 @@
# For an installed makeinfo, we require it to be from texinfo 4.4 or
# higher, else we use the "missing" dummy.
if ${MAKEINFO} --version \
- | egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[4-9]|[5-9])' >/dev/null 2>&1; then
+ | egrep 'texinfo[^0-9]*(4\.([4-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
:
else
MAKEINFO="$MISSING makeinfo"

View File

@@ -0,0 +1,56 @@
--- coreutils-6.0.orig/lib/utimens.c 2006-06-11 09:14:31.000000000 +0200
+++ coreutils-6.0/lib/utimens.c 2007-07-17 00:41:08.000000000 +0200
@@ -75,7 +75,7 @@
Return 0 on success, -1 (setting errno) on failure. */
int
-futimens (int fd ATTRIBUTE_UNUSED,
+cu_futimens (int fd ATTRIBUTE_UNUSED,
char const *file, struct timespec const timespec[2])
{
/* There's currently no interface to set file timestamps with
@@ -168,5 +168,5 @@
int
utimens (char const *file, struct timespec const timespec[2])
{
- return futimens (-1, file, timespec);
+ return cu_futimens (-1, file, timespec);
}
--- coreutils-6.0.orig/lib/utimens.h 2004-11-23 21:41:51.000000000 +0100
+++ coreutils-6.0/lib/utimens.h 2007-07-17 00:41:31.000000000 +0200
@@ -1,3 +1,3 @@
#include "timespec.h"
-int futimens (int, char const *, struct timespec const [2]);
+int cu_futimens (int, char const *, struct timespec const [2]);
int utimens (char const *, struct timespec const [2]);
--- coreutils-6.0.orig/src/copy.c 2007-07-16 23:18:42.000000000 +0200
+++ coreutils-6.0/src/copy.c 2007-07-17 00:43:10.000000000 +0200
@@ -648,7 +648,7 @@
timespec[0] = get_stat_atime (src_sb);
timespec[1] = get_stat_mtime (src_sb);
- if (futimens (dest_desc, dst_name, timespec) != 0)
+ if (cu_futimens (dest_desc, dst_name, timespec) != 0)
{
error (0, errno, _("preserving times for %s"), quote (dst_name));
if (x->require_preserve)
--- coreutils-6.0.orig/src/touch.c 2005-11-02 11:01:07.000000000 +0100
+++ coreutils-6.0/src/touch.c 2007-07-17 00:43:51.000000000 +0200
@@ -167,7 +167,7 @@
if (amtime_now)
{
- /* Pass NULL to futimens so it will not fail if we have
+ /* Pass NULL to cu_futimens so it will not fail if we have
write access to the file, but don't own it. */
t = NULL;
}
@@ -182,7 +182,7 @@
t = timespec;
}
- ok = (futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0);
+ ok = (cu_futimens (fd, (fd == STDOUT_FILENO ? NULL : file), t) == 0);
if (fd == STDIN_FILENO)
{

View File

@@ -0,0 +1,21 @@
diff -up cyrus-sasl-2.1.22/plugins/digestmd5.c.elif cyrus-sasl-2.1.22/plugins/digestmd5.c
--- cyrus-sasl-2.1.22/plugins/digestmd5.c.elif 2009-01-23 09:40:31.000000000 +0100
+++ cyrus-sasl-2.1.22/plugins/digestmd5.c 2009-02-06 15:20:15.000000000 +0100
@@ -2743,7 +2743,7 @@ static sasl_server_plug_t digestmd5_serv
"DIGEST-MD5", /* mech_name */
#ifdef WITH_RC4
128, /* max_ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,
@@ -4071,7 +4071,7 @@ static sasl_client_plug_t digestmd5_clie
"DIGEST-MD5",
#ifdef WITH_RC4 /* mech_name */
128, /* max ssf */
-#elif WITH_DES
+#elif defined(WITH_DES)
112,
#else
1,

View File

@@ -0,0 +1,11 @@
--- dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 03:50:33.000000000 +0200
+++ dbus-1.0.1.orig/dbus/dbus-sysdeps-unix.c 2009-01-01 04:09:24.000000000 +0200
@@ -992,7 +992,7 @@
_dbus_verbose ("read credentials byte\n");
{
-#ifdef SO_PEERCRED
+#if defined(SO_PEERCRED) && defined(HAVE_GETPEERUCRED)
struct ucred cr;
int cr_len = sizeof (cr);

View File

@@ -0,0 +1,26 @@
Description: directfb ftbfs on armel. Implicit declaration error
Fix for ARM builds failing on:
../../../gfxdrivers/davinci/davinci_c64x.c: In function 'davinci_c64x_open':
../../../gfxdrivers/davinci/davinci_c64x.c:1900:6: error: implicit declaration of function 'mknod' [-Werror=implicit-function-declaration]
cc1: some warnings being treated as errors
.
directfb (1.2.10.0-4.3) unstable; urgency=low
.
* Non-maintainer upload.
* Fix "directfb ftbfs on armel. Implicit declaration error"
- Thanks Peter Green for bug report and patch (Closes: #644782)
* Remove m4 macros when calling clean target
Author: Hector Oron <zumbi@debian.org>
Bug-Debian: http://bugs.debian.org/644782
--- directfb-1.2.10.0.orig/gfxdrivers/davinci/davinci_c64x.c
+++ directfb-1.2.10.0/gfxdrivers/davinci/davinci_c64x.c
@@ -37,6 +37,8 @@
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <sys/types.h>
+#include <sys/stat.h>
+
#include <unistd.h>
#include <directfb_util.h>

View File

@@ -0,0 +1,73 @@
diff -up flac-1.2.1/src/libFLAC/stream_decoder.c.asm flac-1.2.1/src/libFLAC/stream_decoder.c
--- flac-1.2.1/src/libFLAC/stream_decoder.c.asm 2007-09-13 17:38:05.000000000 +0200
+++ flac-1.2.1/src/libFLAC/stream_decoder.c 2008-01-29 10:32:17.000000000 +0100
@@ -421,7 +421,7 @@ static FLAC__StreamDecoderInitStatus ini
#ifdef FLAC__CPU_IA32
FLAC__ASSERT(decoder->private_->cpuinfo.type == FLAC__CPUINFO_TYPE_IA32);
#ifdef FLAC__HAS_NASM
-#if 1 /*@@@@@@ OPT: not clearly faster, needs more testing */
+#if 0 /*@@@@@@ OPT: not clearly faster, needs more testing */
if(decoder->private_->cpuinfo.data.ia32.bswap)
decoder->private_->local_bitreader_read_rice_signed_block = FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap;
#endif
diff -up flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
+++ flac-1.2.1/src/libFLAC/ia32/lpc_asm.nasm 2008-01-29 10:34:09.000000000 +0100
@@ -1507,5 +1507,5 @@ cident FLAC__lpc_restore_signal_asm_ia32
end
%ifdef OBJ_FORMAT_elf
- section .note.GNU-stack noalloc
+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
%endif
diff -up flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm flac-1.2.1/src/libFLAC/ia32/Makefile.am
--- flac-1.2.1/src/libFLAC/ia32/Makefile.am.asm 2007-04-04 02:01:13.000000000 +0200
+++ flac-1.2.1/src/libFLAC/ia32/Makefile.am 2008-03-17 14:04:37.000000000 +0100
@@ -37,7 +37,6 @@ STRIP_NON_ASM = sh $(top_srcdir)/strip_n
noinst_LTLIBRARIES = libFLAC-asm.la
libFLAC_asm_la_SOURCES = \
- bitreader_asm.nasm \
cpu_asm.nasm \
fixed_asm.nasm \
lpc_asm.nasm \
diff -up flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm.asm 2007-03-30 02:54:53.000000000 +0200
+++ flac-1.2.1/src/libFLAC/ia32/bitreader_asm.nasm 2008-01-29 10:32:57.000000000 +0100
@@ -564,5 +564,5 @@ cident FLAC__bitreader_read_rice_signed_
end
%ifdef OBJ_FORMAT_elf
- section .note.GNU-stack noalloc
+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
%endif
diff -up flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
+++ flac-1.2.1/src/libFLAC/ia32/fixed_asm.nasm 2008-01-29 10:33:52.000000000 +0100
@@ -308,5 +308,5 @@ cident FLAC__fixed_compute_best_predicto
end
%ifdef OBJ_FORMAT_elf
- section .note.GNU-stack noalloc
+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
%endif
diff -up flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm.asm 2007-03-22 05:13:05.000000000 +0100
+++ flac-1.2.1/src/libFLAC/ia32/cpu_asm.nasm 2008-01-29 10:33:24.000000000 +0100
@@ -117,5 +117,5 @@ cident FLAC__cpu_info_extended_amd_asm_i
end
%ifdef OBJ_FORMAT_elf
- section .note.GNU-stack noalloc
+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
%endif
diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.asm 2007-06-19 22:01:27.000000000 +0200
+++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 10:34:40.000000000 +0100
@@ -155,5 +155,5 @@ cident precompute_partition_info_sums_32
end
%ifdef OBJ_FORMAT_elf
- section .note.GNU-stack noalloc
+ section .note.GNU-stack progbits noalloc noexec nowrite align=1
%endif

View File

@@ -0,0 +1,558 @@
Index: src/libFLAC/bitreader.c
===================================================================
RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
retrieving revision 1.15
diff -u -r1.15 bitreader.c
--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
+++ src/libFLAC/bitreader.c 14 Mar 2008 11:07:07 -0000
@@ -69,13 +69,12 @@
#endif
/* counts the # of zero MSBs in a word */
#define COUNT_ZERO_MSBS(word) ( \
- (word) <= 0xffff ? \
- ( (word) <= 0xff? byte_to_unary_table[word] + 24 : byte_to_unary_table[(word) >> 8] + 16 ) : \
- ( (word) <= 0xffffff? byte_to_unary_table[word >> 16] + 8 : byte_to_unary_table[(word) >> 24] ) \
+ word > 0xffffff ? byte_to_unary_table[(word) >> 24] : \
+ !word ? 32 : \
+ word > 0xffff ? byte_to_unary_table[word >> 16] + 8 : \
+ word > 0xff ? byte_to_unary_table[(word) >> 8] + 16 : \
+ byte_to_unary_table[word] + 24 \
)
-/* this alternate might be slightly faster on some systems/compilers: */
-#define COUNT_ZERO_MSBS2(word) ( (word) <= 0xff ? byte_to_unary_table[word] + 24 : ((word) <= 0xffff ? byte_to_unary_table[(word) >> 8] + 16 : ((word) <= 0xffffff ? byte_to_unary_table[(word) >> 16] + 8 : byte_to_unary_table[(word) >> 24])) )
-
/*
* This should be at least twice as large as the largest number of words
Index: src/libFLAC/bitreader.c
===================================================================
RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
retrieving revision 1.15
diff -u -r1.15 bitreader.c
--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
+++ src/libFLAC/bitreader.c 14 Mar 2008 13:19:46 -0000
@@ -149,6 +148,7 @@
FLAC__CPUInfo cpu_info;
};
+#if FLAC__BYTES_PER_WORD == 4 && FLAC__CPU_IA32
#ifdef _MSC_VER
/* OPT: an MSVC built-in would be better */
static _inline FLAC__uint32 local_swap32_(FLAC__uint32 x)
@@ -173,6 +173,15 @@
done1:
}
}
+#elif __GNUC__
+static void local_swap32_block_(FLAC__uint32 *start, FLAC__uint32 len)
+{
+ FLAC__uint32 *end;
+
+ for(end = start + len; start < end; start++)
+ asm ("bswap %0" : "=r"(*start) : "0"(*start));
+}
+#endif
#endif
static FLaC__INLINE void crc16_update_word_(FLAC__BitReader *br, brword word)
@@ -263,7 +272,7 @@
#if WORDS_BIGENDIAN
#else
end = (br->words*FLAC__BYTES_PER_WORD + br->bytes + bytes + (FLAC__BYTES_PER_WORD-1)) / FLAC__BYTES_PER_WORD;
-# if defined(_MSC_VER) && (FLAC__BYTES_PER_WORD == 4)
+# if FLAC__CPU_IA32 && (__GNUC__ || defined(_MSC_VER)) && FLAC__BYTES_PER_WORD == 4
if(br->cpu_info.type == FLAC__CPUINFO_TYPE_IA32 && br->cpu_info.data.ia32.bswap) {
start = br->words;
local_swap32_block_(br->buffer + start, end - start);
Index: src/libFLAC/bitreader.c
===================================================================
RCS file: /cvsroot/flac/flac/src/libFLAC/bitreader.c,v
retrieving revision 1.15
diff -u -r1.15 bitreader.c
--- src/libFLAC/bitreader.c 28 Feb 2008 05:34:26 -0000 1.15
+++ src/libFLAC/bitreader.c 17 Mar 2008 15:42:57 -0000
@@ -803,379 +812,144 @@
}
/* this is by far the most heavily used reader call. it ain't pretty but it's fast */
-/* a lot of the logic is copied, then adapted, from FLAC__bitreader_read_unary_unsigned() and FLAC__bitreader_read_raw_uint32() */
FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
-/* OPT: possibly faster version for use with MSVC */
-#ifdef _MSC_VER
{
- unsigned i;
- unsigned uval = 0;
- unsigned bits; /* the # of binary LSBs left to read to finish a rice codeword */
-
/* try and get br->consumed_words and br->consumed_bits into register;
* must remember to flush them back to *br before calling other
- * bitwriter functions that use them, and before returning */
- register unsigned cwords;
- register unsigned cbits;
+ * bitreader functions that use them, and before returning */
+ unsigned cwords, words, lsbs, msbs, x, y;
+ unsigned ucbits; /* keep track of the number of unconsumed bits in word */
+ brword b;
+ int *val, *end;
FLAC__ASSERT(0 != br);
FLAC__ASSERT(0 != br->buffer);
/* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
FLAC__ASSERT(parameter < 32);
- /* the above two asserts also guarantee that the binary part never straddles more that 2 words, so we don't have to loop to read it */
-
- if(nvals == 0)
- return true;
-
- cbits = br->consumed_bits;
- cwords = br->consumed_words;
+ /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
- while(1) {
+ val = vals;
+ end = vals + nvals;
- /* read unary part */
- while(1) {
- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
- brword b = br->buffer[cwords] << cbits;
- if(b) {
-#if 0 /* slower, probably due to bad register allocation... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32
- __asm {
- bsr eax, b
- not eax
- and eax, 31
- mov i, eax
- }
-#else
- i = COUNT_ZERO_MSBS(b);
-#endif
- uval += i;
- bits = parameter;
- i++;
- cbits += i;
- if(cbits == FLAC__BITS_PER_WORD) {
- crc16_update_word_(br, br->buffer[cwords]);
- cwords++;
- cbits = 0;
- }
- goto break1;
- }
- else {
- uval += FLAC__BITS_PER_WORD - cbits;
- crc16_update_word_(br, br->buffer[cwords]);
- cwords++;
- cbits = 0;
- /* didn't find stop bit yet, have to keep going... */
- }
- }
- /* at this point we've eaten up all the whole words; have to try
- * reading through any tail bytes before calling the read callback.
- * this is a repeat of the above logic adjusted for the fact we
- * don't have a whole word. note though if the client is feeding
- * us data a byte at a time (unlikely), br->consumed_bits may not
- * be zero.
- */
- if(br->bytes) {
- const unsigned end = br->bytes * 8;
- brword b = (br->buffer[cwords] & (FLAC__WORD_ALL_ONES << (FLAC__BITS_PER_WORD-end))) << cbits;
- if(b) {
- i = COUNT_ZERO_MSBS(b);
- uval += i;
- bits = parameter;
- i++;
- cbits += i;
- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
- goto break1;
- }
- else {
- uval += end - cbits;
- cbits += end;
- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
- /* didn't find stop bit yet, have to keep going... */
- }
- }
- /* flush registers and read; bitreader_read_from_client_() does
- * not touch br->consumed_bits at all but we still need to set
- * it in case it fails and we have to return false.
- */
- br->consumed_bits = cbits;
- br->consumed_words = cwords;
- if(!bitreader_read_from_client_(br))
+ if(parameter == 0) {
+ while(val < end) {
+ /* read the unary MSBs and end bit */
+ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
return false;
- cwords = br->consumed_words;
- }
-break1:
- /* read binary part */
- FLAC__ASSERT(cwords <= br->words);
-
- if(bits) {
- while((br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits < bits) {
- /* flush registers and read; bitreader_read_from_client_() does
- * not touch br->consumed_bits at all but we still need to set
- * it in case it fails and we have to return false.
- */
- br->consumed_bits = cbits;
- br->consumed_words = cwords;
- if(!bitreader_read_from_client_(br))
- return false;
- cwords = br->consumed_words;
- }
- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
- if(cbits) {
- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
- const unsigned n = FLAC__BITS_PER_WORD - cbits;
- const brword word = br->buffer[cwords];
- if(bits < n) {
- uval <<= bits;
- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-bits);
- cbits += bits;
- goto break2;
- }
- uval <<= n;
- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
- bits -= n;
- crc16_update_word_(br, word);
- cwords++;
- cbits = 0;
- if(bits) { /* if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
- uval <<= bits;
- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits));
- cbits = bits;
- }
- goto break2;
- }
- else {
- FLAC__ASSERT(bits < FLAC__BITS_PER_WORD);
- uval <<= bits;
- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
- cbits = bits;
- goto break2;
- }
- }
- else {
- /* in this case we're starting our read at a partial tail word;
- * the reader has guaranteed that we have at least 'bits' bits
- * available to read, which makes this case simpler.
- */
- uval <<= bits;
- if(cbits) {
- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
- FLAC__ASSERT(cbits + bits <= br->bytes*8);
- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-bits);
- cbits += bits;
- goto break2;
- }
- else {
- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-bits);
- cbits += bits;
- goto break2;
- }
- }
- }
-break2:
- /* compose the value */
- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
- /* are we done? */
- --nvals;
- if(nvals == 0) {
- br->consumed_bits = cbits;
- br->consumed_words = cwords;
- return true;
+ *val++ = (int)(msbs >> 1) ^ -(int)(msbs & 1);
}
- uval = 0;
- ++vals;
-
+ return true;
}
-}
-#else
-{
- unsigned i;
- unsigned uval = 0;
- /* try and get br->consumed_words and br->consumed_bits into register;
- * must remember to flush them back to *br before calling other
- * bitwriter functions that use them, and before returning */
- register unsigned cwords;
- register unsigned cbits;
- unsigned ucbits; /* keep track of the number of unconsumed bits in the buffer */
+ FLAC__ASSERT(parameter > 0);
- FLAC__ASSERT(0 != br);
- FLAC__ASSERT(0 != br->buffer);
- /* WATCHOUT: code does not work with <32bit words; we can make things much faster with this assertion */
- FLAC__ASSERT(FLAC__BITS_PER_WORD >= 32);
- FLAC__ASSERT(parameter < 32);
- /* the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it */
+ cwords = br->consumed_words;
+ words = br->words;
- if(nvals == 0)
- return true;
+ /* if we've not consumed up to a partial tail word... */
+ if(cwords >= words) {
+ x = 0;
+ goto process_tail;
+ }
+
+ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
+ b = br->buffer[cwords] << br->consumed_bits; /* keep unconsumed bits aligned to left */
+
+ while(val < end) {
+ /* read the unary MSBs and end bit */
+ x = y = COUNT_ZERO_MSBS(b);
+ if(x == FLAC__BITS_PER_WORD) {
+ x = ucbits;
+ do {
+ /* didn't find stop bit yet, have to keep going... */
+ crc16_update_word_(br, br->buffer[cwords++]);
+ if (cwords >= words)
+ goto incomplete_msbs;
+ b = br->buffer[cwords];
+ y = COUNT_ZERO_MSBS(b);
+ x += y;
+ } while(y == FLAC__BITS_PER_WORD);
+ }
+ b <<= y;
+ b <<= 1; /* account for stop bit */
+ ucbits = (ucbits - x - 1) % FLAC__BITS_PER_WORD;
+ msbs = x;
+
+ /* read the binary LSBs */
+ x = b >> (FLAC__BITS_PER_WORD - parameter);
+ if(parameter <= ucbits) {
+ ucbits -= parameter;
+ b <<= parameter;
+ } else {
+ /* there are still bits left to read, they will all be in the next word */
+ crc16_update_word_(br, br->buffer[cwords++]);
+ if (cwords >= words)
+ goto incomplete_lsbs;
+ b = br->buffer[cwords];
+ ucbits += FLAC__BITS_PER_WORD - parameter;
+ x |= b >> ucbits;
+ b <<= FLAC__BITS_PER_WORD - ucbits;
+ }
+ lsbs = x;
- cbits = br->consumed_bits;
- cwords = br->consumed_words;
- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
+ /* compose the value */
+ x = (msbs << parameter) | lsbs;
+ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
- while(1) {
+ continue;
- /* read unary part */
- while(1) {
- while(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
- brword b = br->buffer[cwords] << cbits;
- if(b) {
-#if 0 /* is not discernably faster... */ && defined FLAC__CPU_IA32 && !defined FLAC__NO_ASM && FLAC__BITS_PER_WORD == 32 && defined __GNUC__
- asm volatile (
- "bsrl %1, %0;"
- "notl %0;"
- "andl $31, %0;"
- : "=r"(i)
- : "r"(b)
- );
-#else
- i = COUNT_ZERO_MSBS(b);
-#endif
- uval += i;
- cbits += i;
- cbits++; /* skip over stop bit */
- if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
- crc16_update_word_(br, br->buffer[cwords]);
- cwords++;
- cbits = 0;
- }
- goto break1;
- }
- else {
- uval += FLAC__BITS_PER_WORD - cbits;
- crc16_update_word_(br, br->buffer[cwords]);
- cwords++;
- cbits = 0;
- /* didn't find stop bit yet, have to keep going... */
- }
- }
- /* at this point we've eaten up all the whole words; have to try
- * reading through any tail bytes before calling the read callback.
- * this is a repeat of the above logic adjusted for the fact we
- * don't have a whole word. note though if the client is feeding
- * us data a byte at a time (unlikely), br->consumed_bits may not
- * be zero.
- */
- if(br->bytes) {
- const unsigned end = br->bytes * 8;
- brword b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits;
- if(b) {
- i = COUNT_ZERO_MSBS(b);
- uval += i;
- cbits += i;
- cbits++; /* skip over stop bit */
- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
- goto break1;
- }
- else {
- uval += end - cbits;
- cbits += end;
- FLAC__ASSERT(cbits < FLAC__BITS_PER_WORD);
- /* didn't find stop bit yet, have to keep going... */
- }
+ /* at this point we've eaten up all the whole words */
+process_tail:
+ do {
+ if(0) {
+incomplete_msbs:
+ br->consumed_bits = 0;
+ br->consumed_words = cwords;
}
- /* flush registers and read; bitreader_read_from_client_() does
- * not touch br->consumed_bits at all but we still need to set
- * it in case it fails and we have to return false.
- */
- br->consumed_bits = cbits;
- br->consumed_words = cwords;
- if(!bitreader_read_from_client_(br))
+
+ /* read the unary MSBs and end bit */
+ if(!FLAC__bitreader_read_unary_unsigned(br, &msbs))
return false;
- cwords = br->consumed_words;
- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval;
- /* + uval to offset our count by the # of unary bits already
- * consumed before the read, because we will add these back
- * in all at once at break1
- */
- }
-break1:
- ucbits -= uval;
- ucbits--; /* account for stop bit */
-
- /* read binary part */
- FLAC__ASSERT(cwords <= br->words);
-
- if(parameter) {
- while(ucbits < parameter) {
- /* flush registers and read; bitreader_read_from_client_() does
- * not touch br->consumed_bits at all but we still need to set
- * it in case it fails and we have to return false.
- */
- br->consumed_bits = cbits;
+ msbs += x;
+ x = ucbits = 0;
+
+ if(0) {
+incomplete_lsbs:
+ br->consumed_bits = 0;
br->consumed_words = cwords;
- if(!bitreader_read_from_client_(br))
- return false;
- cwords = br->consumed_words;
- ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
- }
- if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
- if(cbits) {
- /* this also works when consumed_bits==0, it's just slower than necessary for that case */
- const unsigned n = FLAC__BITS_PER_WORD - cbits;
- const brword word = br->buffer[cwords];
- if(parameter < n) {
- uval <<= parameter;
- uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter);
- cbits += parameter;
- }
- else {
- uval <<= n;
- uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
- crc16_update_word_(br, word);
- cwords++;
- cbits = parameter - n;
- if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
- uval <<= cbits;
- uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
- }
- }
- }
- else {
- cbits = parameter;
- uval <<= parameter;
- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
- }
}
- else {
- /* in this case we're starting our read at a partial tail word;
- * the reader has guaranteed that we have at least 'parameter'
- * bits available to read, which makes this case simpler.
- */
- uval <<= parameter;
- if(cbits) {
- /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
- FLAC__ASSERT(cbits + parameter <= br->bytes*8);
- uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter);
- cbits += parameter;
- }
- else {
- cbits = parameter;
- uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
- }
- }
- }
- ucbits -= parameter;
-
- /* compose the value */
- *vals = (int)(uval >> 1 ^ -(int)(uval & 1));
+ /* read the binary LSBs */
+ if(!FLAC__bitreader_read_raw_uint32(br, &lsbs, parameter - ucbits))
+ return false;
+ lsbs = x | lsbs;
- /* are we done? */
- --nvals;
- if(nvals == 0) {
- br->consumed_bits = cbits;
- br->consumed_words = cwords;
- return true;
- }
+ /* compose the value */
+ x = (msbs << parameter) | lsbs;
+ *val++ = (int)(x >> 1) ^ -(int)(x & 1);
+ x = 0;
- uval = 0;
- ++vals;
+ cwords = br->consumed_words;
+ words = br->words;
+ ucbits = FLAC__BITS_PER_WORD - br->consumed_bits;
+ b = br->buffer[cwords] << br->consumed_bits;
+ } while(cwords >= words && val < end);
+ }
+ if(ucbits == 0 && cwords < words) {
+ /* don't leave the head word with no unconsumed bits */
+ crc16_update_word_(br, br->buffer[cwords++]);
+ ucbits = FLAC__BITS_PER_WORD;
}
+
+ br->consumed_bits = FLAC__BITS_PER_WORD - ucbits;
+ br->consumed_words = cwords;
+
+ return true;
}
-#endif
#if 0 /* UNUSED */
FLAC__bool FLAC__bitreader_read_golomb_signed(FLAC__BitReader *br, int *val, unsigned parameter)

View File

@@ -0,0 +1,45 @@
diff -up flac-1.2.1/src/libFLAC/Makefile.am.cflags flac-1.2.1/src/libFLAC/Makefile.am
--- flac-1.2.1/src/libFLAC/Makefile.am.cflags 2007-09-14 23:06:17.000000000 +0200
+++ flac-1.2.1/src/libFLAC/Makefile.am 2008-03-17 14:19:29.000000000 +0100
@@ -41,7 +41,7 @@ CPUCFLAGS = -faltivec -force_cpusubtype_
else
# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
#@@@ PPC optimizations temporarily disabled
-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
+CPUCFLAGS = -DFLAC__NO_ASM
endif
endif
@@ -69,7 +69,7 @@ endif
endif
endif
-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
+libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@ libFLAC_extracflags.la
SUBDIRS = $(ARCH_SUBDIRS) include .
@@ -112,7 +112,10 @@ libFLAC_la_SOURCES = \
metadata_iterators.c \
metadata_object.c \
stream_decoder.c \
- stream_encoder.c \
stream_encoder_framing.c \
window.c \
$(extra_ogg_sources)
+
+noinst_LTLIBRARIES = libFLAC_extracflags.la
+libFLAC_extracflags_la_SOURCES = stream_encoder.c
+libFLAC_extracflags_la_CFLAGS = $(AM_CFLAGS) -funroll-loops
diff -up flac-1.2.1/configure.in.cflags flac-1.2.1/configure.in
--- flac-1.2.1/configure.in.cflags 2007-09-13 17:48:42.000000000 +0200
+++ flac-1.2.1/configure.in 2008-03-17 14:17:08.000000000 +0100
@@ -301,7 +301,7 @@ else
CPPFLAGS="-DNDEBUG $CPPFLAGS"
if test "x$GCC" = xyes; then
CPPFLAGS="-DFLaC__INLINE=__inline__ $CPPFLAGS"
- CFLAGS="-O3 -funroll-loops -finline-functions -Wall -W -Winline $CFLAGS"
+ CFLAGS="-Wall -W -Winline $CFLAGS"
fi
fi

View File

@@ -0,0 +1,11 @@
diff -up flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 flac-1.2.1/examples/cpp/encode/file/main.cpp
--- flac-1.2.1/examples/cpp/encode/file/main.cpp.gcc43 2007-09-13 17:58:03.000000000 +0200
+++ flac-1.2.1/examples/cpp/encode/file/main.cpp 2008-01-08 10:27:39.000000000 +0100
@@ -29,6 +29,7 @@
#endif
#include <stdio.h>
+#include <string.h>
#include <stdlib.h>
#include "FLAC++/metadata.h"
#include "FLAC++/encoder.h"

View File

@@ -0,0 +1,39 @@
diff -up flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms flac-1.2.1/src/libFLAC/include/private/ogg_helper.h
--- flac-1.2.1/src/libFLAC/include/private/ogg_helper.h.hidesyms 2007-02-02 07:22:40.000000000 +0100
+++ flac-1.2.1/src/libFLAC/include/private/ogg_helper.h 2008-01-29 15:27:13.000000000 +0100
@@ -35,9 +35,13 @@
#include <ogg/ogg.h>
#include "FLAC/stream_encoder.h" /* for FLAC__StreamEncoder */
+__attribute__((__visibility__("hidden")))
void simple_ogg_page__init(ogg_page *page);
+__attribute__((__visibility__("hidden")))
void simple_ogg_page__clear(ogg_page *page);
+__attribute__((__visibility__("hidden")))
FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data);
+__attribute__((__visibility__("hidden")))
FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data);
#endif
diff -up flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms flac-1.2.1/src/libFLAC/include/private/bitreader.h
--- flac-1.2.1/src/libFLAC/include/private/bitreader.h.hidesyms 2007-07-10 22:22:19.000000000 +0200
+++ flac-1.2.1/src/libFLAC/include/private/bitreader.h 2008-01-29 15:27:13.000000000 +0100
@@ -95,5 +95,6 @@ FLAC__bool FLAC__bitreader_read_golomb_u
FLAC__bool FLAC__bitreader_read_utf8_uint32(FLAC__BitReader *br, FLAC__uint32 *val, FLAC__byte *raw, unsigned *rawlen);
FLAC__bool FLAC__bitreader_read_utf8_uint64(FLAC__BitReader *br, FLAC__uint64 *val, FLAC__byte *raw, unsigned *rawlen);
+__attribute__((__visibility__("hidden")))
FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br);
#endif
diff -up flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm
--- flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm.hidesyms 2008-01-29 15:27:13.000000000 +0100
+++ flac-1.2.1/src/libFLAC/ia32/stream_encoder_asm.nasm 2008-01-29 15:28:32.000000000 +0100
@@ -34,7 +34,7 @@
data_section
-cglobal precompute_partition_info_sums_32bit_asm_ia32_
+cglobal precompute_partition_info_sums_32bit_asm_ia32_:function hidden
code_section

View File

@@ -0,0 +1,41 @@
diff -up flac-1.2.1/test/test_seeking.sh.tests flac-1.2.1/test/test_seeking.sh
--- flac-1.2.1/test/test_seeking.sh.tests 2007-09-11 09:33:04.000000000 +0200
+++ flac-1.2.1/test/test_seeking.sh 2008-01-29 13:52:03.000000000 +0100
@@ -103,7 +103,7 @@ tiny_seek_count=100
if [ "$FLAC__TEST_LEVEL" -gt 1 ] ; then
small_seek_count=10000
else
- small_seek_count=100000
+ small_seek_count=100
fi
for suffix in '' '-s' ; do
diff -up flac-1.2.1/test/test_streams.sh.tests flac-1.2.1/test/test_streams.sh
--- flac-1.2.1/test/test_streams.sh.tests 2007-06-16 21:58:39.000000000 +0200
+++ flac-1.2.1/test/test_streams.sh 2008-03-17 13:57:39.000000000 +0100
@@ -39,6 +39,10 @@ if [ x"$FLAC__TEST_LEVEL" = x ] ; then
FLAC__TEST_LEVEL=1
fi
+if [ "$FLAC__TEST_LEVEL" -eq 0 ] ; then
+ exit 0
+fi
+
flac --help 1>/dev/null 2>/dev/null || die "ERROR can't find flac executable"
run_flac ()
diff -up flac-1.2.1/src/test_streams/main.c.tests flac-1.2.1/src/test_streams/main.c
--- flac-1.2.1/src/test_streams/main.c.tests 2007-08-31 07:54:49.000000000 +0200
+++ flac-1.2.1/src/test_streams/main.c 2008-01-29 13:53:46.000000000 +0100
@@ -898,9 +898,9 @@ int main(int argc, char *argv[])
if(!generate_noise("noise.raw", 65536 * 8 * 3)) return 1;
if(!generate_noise("noise8m32.raw", 32)) return 1;
if(!generate_wackywavs()) return 1;
- for(channels = 1; channels <= 8; channels++) {
+ for(channels = 1; channels <= 2; channels++) {
unsigned bits_per_sample;
- for(bits_per_sample = 4; bits_per_sample <= 24; bits_per_sample++) {
+ for(bits_per_sample = 8; bits_per_sample <= 24; bits_per_sample += 8) {
static const unsigned nsamples[] = { 1, 111, 4777 } ;
unsigned samples;
for(samples = 0; samples < sizeof(nsamples)/sizeof(nsamples[0]); samples++) {

View File

@@ -1,336 +0,0 @@
Submitted By: Robert Connolly <robert at linuxfromscratch dot org> (ashes)
Date: 2006-01-16
Initial Package Version: 4.0.0
Upstream Status: Not Sent - LFS Specfic
Origin: Idea originally developed by Ryan Oliver and Greg Schafer for
the Pure LFS project.
More architectures added by Zack Winkles.
Further fine tunings by Greg Schafer.
Modified for gcc 3.3.2 by Oliver Brakmann.
Rediffed against gcc 3.4.0 by Zack Winkles.
Rediffed against gcc 3.4.3 by Jim Gifford.
Rediffed against gcc 4.0.0 by Robert Connolly.
Description: This patch modifies the location of the dynamic linker for
the GCC Pass 2 build in LFS Chapter 5.
diff -Naur gcc-20050116.orig/gcc/config/alpha/linux-elf.h gcc-20050116/gcc/config/alpha/linux-elf.h
--- gcc-20050116.orig/gcc/config/alpha/linux-elf.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/alpha/linux-elf.h 2005-01-17 00:46:14.560651027 +0000
@@ -27,7 +27,7 @@
#define SUBTARGET_EXTRA_SPECS \
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
-#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
%{O*:-O3} %{!O*:-O1} \
diff -Naur gcc-20050116.orig/gcc/config/arm/linux-elf.h gcc-20050116/gcc/config/arm/linux-elf.h
--- gcc-20050116.orig/gcc/config/arm/linux-elf.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/arm/linux-elf.h 2005-01-17 00:46:50.538578614 +0000
@@ -87,7 +87,7 @@
%{shared:-shared} \
%{symbolic:-Bsymbolic} \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2} \
-X \
%{mbig-endian:-EB}" \
SUBTARGET_EXTRA_LINK_SPEC
diff -Naur gcc-20050116.orig/gcc/config/frv/linux.h gcc-20050116/gcc/config/frv/linux.h
--- gcc-20050116.orig/gcc/config/frv/linux.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/frv/linux.h 2005-01-17 01:33:50.600805260 +0000
@@ -41,7 +41,7 @@
%{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \
%{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static}}"
/* Support for compile-time default CPU. */
diff -Naur gcc-20050116.orig/gcc/config/i386/gnu.h gcc-20050116/gcc/config/i386/gnu.h
--- gcc-20050116.orig/gcc/config/i386/gnu.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/i386/gnu.h 2005-01-17 01:34:11.142021939 +0000
@@ -27,7 +27,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \
%{static:-static}}"
#undef STARTFILE_SPEC
diff -Naur gcc-20050116.orig/gcc/config/i386/linux.h gcc-20050116/gcc/config/i386/linux.h
--- gcc-20050116.orig/gcc/config/i386/linux.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/i386/linux.h 2005-01-17 00:49:27.412667132 +0000
@@ -105,7 +105,7 @@
/* If ELF is the default format, we should not use /lib/elf. */
#define LINK_EMULATION "elf_i386"
-#define DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
diff -Naur gcc-20050116.orig/gcc/config/i386/linux64.h gcc-20050116/gcc/config/i386/linux64.h
--- gcc-20050116.orig/gcc/config/i386/linux64.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/i386/linux64.h 2005-01-17 00:50:23.055094690 +0000
@@ -60,8 +60,8 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \
%{static:-static}}"
#define MULTILIB_DEFAULTS { "m64" }
diff -Naur gcc-20050116.orig/gcc/config/ia64/linux.h gcc-20050116/gcc/config/ia64/linux.h
--- gcc-20050116.orig/gcc/config/ia64/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/ia64/linux.h 2005-01-17 00:50:43.146472133 +0000
@@ -43,7 +43,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \
%{static:-static}}"
diff -Naur gcc-20050116.orig/gcc/config/linux.h gcc-20050116/gcc/config/linux.h
--- gcc-20050116.orig/gcc/config/linux.h 2005-01-17 00:45:16.000000000 +0000
+++ gcc-20050116/gcc/config/linux.h 2005-01-17 00:51:14.101809663 +0000
@@ -104,3 +104,7 @@
#define TARGET_C99_FUNCTIONS 1
#define TARGET_HAS_F_SETLKW
+
+/* Remove /usr/include from the end of the include search path. */
+#undef STANDARD_INCLUDE_DIR
+#define STANDARD_INCLUDE_DIR 0
diff -Naur gcc-20050116.orig/gcc/config/m32r/linux.h gcc-20050116/gcc/config/m32r/linux.h
--- gcc-20050116.orig/gcc/config/m32r/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/m32r/linux.h 2005-01-17 00:51:39.720640870 +0000
@@ -66,7 +66,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
#else
#define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \
@@ -74,7 +74,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
#endif
diff -Naur gcc-20050116.orig/gcc/config/m68k/linux.h gcc-20050116/gcc/config/m68k/linux.h
--- gcc-20050116.orig/gcc/config/m68k/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/m68k/linux.h 2005-01-17 00:52:07.633830392 +0000
@@ -132,7 +132,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \
%{static}}"
/* For compatibility with linux/a.out */
diff -Naur gcc-20050116.orig/gcc/config/mips/linux.h gcc-20050116/gcc/config/mips/linux.h
--- gcc-20050116.orig/gcc/config/mips/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/mips/linux.h 2005-01-17 00:52:28.348034505 +0000
@@ -115,7 +115,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}}"
#undef SUBTARGET_ASM_SPEC
diff -Naur gcc-20050116.orig/gcc/config/mips/linux64.h gcc-20050116/gcc/config/mips/linux64.h
--- gcc-20050116.orig/gcc/config/mips/linux64.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/mips/linux64.h 2005-01-17 00:53:04.645878728 +0000
@@ -60,9 +60,9 @@
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \
- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \
- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \
+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \
+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \
+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \
%{static:-static}}} \
%{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \
%{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \
diff -Naur gcc-20050116.orig/gcc/config/mn10300/linux.h gcc-20050116/gcc/config/mn10300/linux.h
--- gcc-20050116.orig/gcc/config/mn10300/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/mn10300/linux.h 2005-01-17 00:53:23.477610026 +0000
@@ -37,7 +37,7 @@
#define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}"
#undef LIB_SPEC
diff -Naur gcc-20050116.orig/gcc/config/pa/pa-linux.h gcc-20050116/gcc/config/pa/pa-linux.h
--- gcc-20050116.orig/gcc/config/pa/pa-linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/pa/pa-linux.h 2005-01-17 00:53:45.334495141 +0000
@@ -88,7 +88,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}"
/* glibc's profiling functions don't need gcc to allocate counters. */
diff -Naur gcc-20050116.orig/gcc/config/rs6000/linux64.h gcc-20050116/gcc/config/rs6000/linux64.h
--- gcc-20050116.orig/gcc/config/rs6000/linux64.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/rs6000/linux64.h 2005-01-17 00:54:28.524412534 +0000
@@ -351,11 +351,11 @@
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}"
#undef TOC_SECTION_ASM_OP
#define TOC_SECTION_ASM_OP \
diff -Naur gcc-20050116.orig/gcc/config/rs6000/sysv4.h gcc-20050116/gcc/config/rs6000/sysv4.h
--- gcc-20050116.orig/gcc/config/rs6000/sysv4.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/rs6000/sysv4.h 2005-01-17 01:26:39.126999460 +0000
@@ -1131,7 +1131,7 @@
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#if defined(HAVE_LD_EH_FRAME_HDR)
# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
@@ -1162,7 +1162,7 @@
#define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \
%{!undef: \
diff -Naur gcc-20050116.orig/gcc/config/s390/linux.h gcc-20050116/gcc/config/s390/linux.h
--- gcc-20050116.orig/gcc/config/s390/linux.h 2005-01-17 00:45:17.000000000 +0000
+++ gcc-20050116/gcc/config/s390/linux.h 2005-01-17 01:26:58.672523211 +0000
@@ -86,8 +86,8 @@
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
- %{m31:-dynamic-linker /lib/ld.so.1} \
- %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \
+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}"
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
diff -Naur gcc-20050116.orig/gcc/config/sh/linux.h gcc-20050116/gcc/config/sh/linux.h
--- gcc-20050116.orig/gcc/config/sh/linux.h 2005-01-17 00:45:18.000000000 +0000
+++ gcc-20050116/gcc/config/sh/linux.h 2005-01-17 01:27:19.588663163 +0000
@@ -70,7 +70,7 @@
"%{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}"
#undef LIB_SPEC
diff -Naur gcc-20050116.orig/gcc/config/sparc/linux.h gcc-20050116/gcc/config/sparc/linux.h
--- gcc-20050116.orig/gcc/config/sparc/linux.h 2005-01-17 00:45:18.000000000 +0000
+++ gcc-20050116/gcc/config/sparc/linux.h 2005-01-17 01:30:07.282688639 +0000
@@ -131,13 +131,13 @@
/* If ELF is the default format, we should not use /lib/elf. */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \
%{!mno-relax:%{!r:-relax}} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
diff -Naur gcc-20050116.orig/gcc/config/sparc/linux64.h gcc-20050116/gcc/config/sparc/linux64.h
--- gcc-20050116.orig/gcc/config/sparc/linux64.h 2005-01-17 00:45:18.000000000 +0000
+++ gcc-20050116/gcc/config/sparc/linux64.h 2005-01-17 01:31:18.242712476 +0000
@@ -167,21 +167,21 @@
{ "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
{ "link_arch", LINK_ARCH_SPEC },
-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}} \
"
-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \
%{static:-static}}} \
"
@@ -257,12 +257,12 @@
#else /* !SPARC_BI_ARCH */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \
%{static:-static}}} \
%{mlittle-endian:-EL} \
%{!mno-relax:%{!r:-relax}} \
diff -Naur gcc-20050116.orig/gcc/config/xtensa/linux.h gcc-20050116/gcc/config/xtensa/linux.h
--- gcc-20050116.orig/gcc/config/xtensa/linux.h 2005-01-17 00:45:18.000000000 +0000
+++ gcc-20050116/gcc/config/xtensa/linux.h 2005-01-17 01:32:08.951429623 +0000
@@ -50,7 +50,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}}"
#undef LOCAL_LABEL_PREFIX

View File

@@ -1,30 +0,0 @@
diff -u -r gcc-4.0.2/gcc/config/arm/t-linux gcc-4.0.2/gcc/config/arm.new/t-linux
--- gcc-4.0.2/gcc/config/arm/t-linux 2005-10-18 22:04:44.000000000 +1000
+++ gcc-4.0.2/gcc/config/arm.new/t-linux 2005-10-18 22:05:03.000000000 +1000
@@ -4,7 +4,12 @@ TARGET_LIBGCC2_CFLAGS = -fomit-frame-poi
LIBGCC2_DEBUG_CFLAGS = -g0
LIB1ASMSRC = arm/lib1funcs.asm
-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
+ _fixsfsi _fixunssfsi _floatdidf _floatdisf \
+ _bb_init_func _call_via_rX _interwork_call_via_rX \
+ _lshrdi3 _ashrdi3 _ashldi3
# MULTILIB_OPTIONS = mhard-float/msoft-float
# MULTILIB_DIRNAMES = hard-float soft-float
--- gcc-4.1.1/gcc/config/arm/linux-elf.h 2007-01-06 11:17:51.000000000 +0000
+++ gcc-4.1.1/gcc/config/arm/linux-elf-soft.h 2007-01-06 11:22:01.000000000 +0000
@@ -49,7 +49,7 @@
%{shared:-lc} \
%{!shared:%{profile:-lc_p}%{!profile:-lc}}"
-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+/* #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" */
#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2"

View File

@@ -1,12 +0,0 @@
diff -Naur gcc-4.1.2.org/libstdc++-v3/configure gcc-4.1.2/libstdc++-v3/configure
--- gcc-4.1.2.org/libstdc++-v3/configure 2007-01-29 11:51:01.000000000 +0100
+++ gcc-4.1.2/libstdc++-v3/configure 2011-08-29 19:25:22.973430586 +0200
@@ -8281,7 +8281,7 @@
if test x"$with_gnu_ld" = x"yes"; then
ldver=`$LD --version 2>/dev/null | head -1 | \
- sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'`
+ sed -e 's/GNU ld .*) \([0-9.][0-9.]*\).*/\1/'`
glibcxx_gnu_ld_version=`echo $ldver | \
$AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`

View File

@@ -1,24 +0,0 @@
diff -ur gcc-4.1.2/gcc/cp/g++spec.c gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c
--- gcc-4.1.2/gcc/cp/g++spec.c 2005-06-25 02:59:41.000000000 +0200
+++ gcc-4.1.2-gcc_eh/gcc/cp/g++spec.c 2007-08-03 14:46:03.000000000 +0200
@@ -251,7 +251,7 @@
#endif
/* Make sure to have room for the trailing NULL argument. */
- num_args = argc + added + need_math + shared_libgcc + (library > 0) + 1;
+ num_args = argc + added + need_math + shared_libgcc + 2 * (library > 0) + 1;
arglist = xmalloc (num_args * sizeof (char *));
i = 0;
@@ -311,7 +311,10 @@
{
arglist[j] = saw_profile_flag ? LIBSTDCXX_PROFILE : LIBSTDCXX;
if (arglist[j][0] != '-' || arglist[j][1] == 'l')
- added_libraries++;
+ {
+ arglist[++j] = "-lgcc_eh";
+ added_libraries += 2;
+ }
j++;
}
if (saw_math)

View File

@@ -1,507 +0,0 @@
diff -Naur gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h gcc-4.1.2/gcc/config/alpha/linux-elf.h
--- gcc-4.1.2.orig/gcc/config/alpha/linux-elf.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/alpha/linux-elf.h 2011-09-01 17:11:11.000000000 +0000
@@ -27,7 +27,7 @@
#define SUBTARGET_EXTRA_SPECS \
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
-#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define ELF_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
%{O*:-O3} %{!O*:-O1} \
diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h gcc-4.1.2/gcc/config/arm/linux-eabi.h
--- gcc-4.1.2.orig/gcc/config/arm/linux-eabi.h 2005-11-15 14:32:13.000000000 +0000
+++ gcc-4.1.2/gcc/config/arm/linux-eabi.h 2011-09-01 17:11:47.000000000 +0000
@@ -53,7 +53,7 @@
/* Use ld-linux.so.3 so that it will be possible to run "classic"
GNU/Linux binaries on an EABI system. */
#undef LINUX_TARGET_INTERPRETER
-#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.3"
/* At this point, bpabi.h will have clobbered LINK_SPEC. We want to
use the GNU/Linux version, not the generic BPABI version. */
diff -Naur gcc-4.1.2.orig/gcc/config/arm/linux-elf.h gcc-4.1.2/gcc/config/arm/linux-elf.h
--- gcc-4.1.2.orig/gcc/config/arm/linux-elf.h 2005-10-10 01:04:31.000000000 +0000
+++ gcc-4.1.2/gcc/config/arm/linux-elf.h 2011-09-01 17:11:11.000000000 +0000
@@ -51,7 +51,7 @@
#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
-#define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2"
+#define LINUX_TARGET_INTERPRETER "/tools/lib/ld-linux.so.2"
#define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \
%{b} \
diff -Naur gcc-4.1.2.orig/gcc/config/frv/linux.h gcc-4.1.2/gcc/config/frv/linux.h
--- gcc-4.1.2.orig/gcc/config/frv/linux.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/frv/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -41,7 +41,7 @@
%{mfdpic: -m elf32frvfd -z text} %{shared} %{pie} \
%{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static}}"
/* Support for compile-time default CPU. */
diff -Naur gcc-4.1.2.orig/gcc/config/i386/gnu.h gcc-4.1.2/gcc/config/i386/gnu.h
--- gcc-4.1.2.orig/gcc/config/i386/gnu.h 2004-09-08 00:17:19.000000000 +0000
+++ gcc-4.1.2/gcc/config/i386/gnu.h 2011-09-01 17:11:11.000000000 +0000
@@ -27,7 +27,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so}} \
%{static:-static}}"
#undef STARTFILE_SPEC
diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux64.h gcc-4.1.2/gcc/config/i386/linux64.h
--- gcc-4.1.2.orig/gcc/config/i386/linux64.h 2005-08-10 17:53:01.000000000 +0000
+++ gcc-4.1.2/gcc/config/i386/linux64.h 2011-09-01 17:11:11.000000000 +0000
@@ -60,8 +60,8 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
+ %{m32:%{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
+ %{!m32:%{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux-x86-64.so.2}}} \
%{static:-static}}"
/* Similar to standard Linux, but adding -ffast-math support. */
diff -Naur gcc-4.1.2.orig/gcc/config/i386/linux.h gcc-4.1.2/gcc/config/i386/linux.h
--- gcc-4.1.2.orig/gcc/config/i386/linux.h 2005-08-10 17:53:01.000000000 +0000
+++ gcc-4.1.2/gcc/config/i386/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -105,7 +105,7 @@
/* If ELF is the default format, we should not use /lib/elf. */
#define LINK_EMULATION "elf_i386"
-#define DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h gcc-4.1.2/gcc/config/ia64/linux.h
--- gcc-4.1.2.orig/gcc/config/ia64/linux.h 2006-12-12 15:24:07.000000000 +0000
+++ gcc-4.1.2/gcc/config/ia64/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -43,7 +43,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux-ia64.so.2}} \
%{static:-static}}"
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
diff -Naur gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig gcc-4.1.2/gcc/config/ia64/linux.h.orig
--- gcc-4.1.2.orig/gcc/config/ia64/linux.h.orig 1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.1.2/gcc/config/ia64/linux.h.orig 2006-12-12 15:24:07.000000000 +0000
@@ -0,0 +1,59 @@
+/* Definitions for ia64-linux target. */
+
+/* This macro is a C statement to print on `stderr' a string describing the
+ particular machine description choice. */
+
+#define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+
+/* This is for -profile to use -lc_p instead of -lc. */
+#undef CC1_SPEC
+#define CC1_SPEC "%{profile:-p} %{G*}"
+
+/* Target OS builtins. */
+#define TARGET_OS_CPP_BUILTINS() \
+do { \
+ LINUX_TARGET_OS_CPP_BUILTINS(); \
+ builtin_define("_LONGLONG"); \
+} while (0)
+
+/* Need to override linux.h STARTFILE_SPEC, since it has crtbeginT.o in. */
+#undef STARTFILE_SPEC
+#ifdef HAVE_LD_PIE
+#define STARTFILE_SPEC \
+ "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}}\
+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+#else
+#define STARTFILE_SPEC \
+ "%{!shared: %{pg|p|profile:gcrt1.o%s;:crt1.o%s}}\
+ crti.o%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+#endif
+
+/* Similar to standard Linux, but adding -ffast-math support. */
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC \
+ "%{ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
+ %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+
+/* Define this for shared library support because it isn't in the main
+ linux.h file. */
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+ %{shared:-shared} \
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
+ %{static:-static}}"
+
+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+#define JMP_BUF_SIZE 76
+
+/* Override linux.h LINK_EH_SPEC definition.
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+#undef LINK_EH_SPEC
+#define LINK_EH_SPEC ""
+
+#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
diff -Naur gcc-4.1.2.orig/gcc/config/linux.h gcc-4.1.2/gcc/config/linux.h
--- gcc-4.1.2.orig/gcc/config/linux.h 2005-08-06 13:26:35.000000000 +0000
+++ gcc-4.1.2/gcc/config/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -104,3 +104,7 @@
#define TARGET_C99_FUNCTIONS 1
#define TARGET_POSIX_IO
+
+/* Remove /usr/include from the end of the include search path. */
+#undef STANDARD_INCLUDE_DIR
+#define STANDARD_INCLUDE_DIR 0
diff -Naur gcc-4.1.2.orig/gcc/config/m32r/linux.h gcc-4.1.2/gcc/config/m32r/linux.h
--- gcc-4.1.2.orig/gcc/config/m32r/linux.h 2005-07-08 10:00:15.000000000 +0000
+++ gcc-4.1.2/gcc/config/m32r/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -66,7 +66,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
#else
#define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \
@@ -74,7 +74,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
#endif
diff -Naur gcc-4.1.2.orig/gcc/config/m68k/linux.h gcc-4.1.2/gcc/config/m68k/linux.h
--- gcc-4.1.2.orig/gcc/config/m68k/linux.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/m68k/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -128,7 +128,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker*:-dynamic-linker /tools/lib/ld.so.1}} \
%{static}}"
/* For compatibility with linux/a.out */
diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux64.h gcc-4.1.2/gcc/config/mips/linux64.h
--- gcc-4.1.2.orig/gcc/config/mips/linux64.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/mips/linux64.h 2011-09-01 17:11:11.000000000 +0000
@@ -47,9 +47,9 @@
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
- %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \
- %{mabi=64: -dynamic-linker /lib64/ld.so.1} \
- %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \
+ %{mabi=n32: -dynamic-linker /tools/lib32/ld.so.1} \
+ %{mabi=64: -dynamic-linker /tools/lib64/ld.so.1} \
+ %{mabi=32: -dynamic-linker /tools/lib/ld.so.1}}} \
%{static:-static}}} \
%{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32} \
%{mabi=64:-melf64%{EB:b}%{EL:l}tsmip} \
diff -Naur gcc-4.1.2.orig/gcc/config/mips/linux.h gcc-4.1.2/gcc/config/mips/linux.h
--- gcc-4.1.2.orig/gcc/config/mips/linux.h 2006-12-17 13:57:31.000000000 +0000
+++ gcc-4.1.2/gcc/config/mips/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -112,7 +112,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}}"
#undef SUBTARGET_ASM_SPEC
diff -Naur gcc-4.1.2.orig/gcc/config/mn10300/linux.h gcc-4.1.2/gcc/config/mn10300/linux.h
--- gcc-4.1.2.orig/gcc/config/mn10300/linux.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/mn10300/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -37,7 +37,7 @@
#define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}"
#undef PROCESSOR_DEFAULT
diff -Naur gcc-4.1.2.orig/gcc/config/pa/pa-linux.h gcc-4.1.2/gcc/config/pa/pa-linux.h
--- gcc-4.1.2.orig/gcc/config/pa/pa-linux.h 2007-01-12 02:23:38.000000000 +0000
+++ gcc-4.1.2/gcc/config/pa/pa-linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -55,7 +55,7 @@
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}"
/* glibc's profiling functions don't need gcc to allocate counters. */
diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/linux64.h gcc-4.1.2/gcc/config/rs6000/linux64.h
--- gcc-4.1.2.orig/gcc/config/rs6000/linux64.h 2006-02-10 20:58:33.000000000 +0000
+++ gcc-4.1.2/gcc/config/rs6000/linux64.h 2011-09-01 17:11:11.000000000 +0000
@@ -339,11 +339,11 @@
#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld64.so.1}}}"
#undef TOC_SECTION_ASM_OP
#define TOC_SECTION_ASM_OP \
diff -Naur gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h gcc-4.1.2/gcc/config/rs6000/sysv4.h
--- gcc-4.1.2.orig/gcc/config/rs6000/sysv4.h 2006-02-10 20:58:33.000000000 +0000
+++ gcc-4.1.2/gcc/config/rs6000/sysv4.h 2011-09-01 17:11:11.000000000 +0000
@@ -1041,7 +1041,7 @@
#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#if defined(HAVE_LD_EH_FRAME_HDR)
# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
@@ -1072,7 +1072,7 @@
#define LINK_OS_GNU_SPEC "-m elf32ppclinux %{!shared: %{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}}}"
#define CPP_OS_GNU_SPEC "-D__unix__ -D__gnu_hurd__ -D__GNU__ \
%{!undef: \
diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h gcc-4.1.2/gcc/config/s390/linux.h
--- gcc-4.1.2.orig/gcc/config/s390/linux.h 2006-12-12 15:24:07.000000000 +0000
+++ gcc-4.1.2/gcc/config/s390/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -86,8 +86,8 @@
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
- %{m31:-dynamic-linker /lib/ld.so.1} \
- %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
+ %{m31:-dynamic-linker /tools/lib/ld.so.1} \
+ %{m64:-dynamic-linker /tools/lib/ld64.so.1}}}}"
#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
diff -Naur gcc-4.1.2.orig/gcc/config/s390/linux.h.orig gcc-4.1.2/gcc/config/s390/linux.h.orig
--- gcc-4.1.2.orig/gcc/config/s390/linux.h.orig 1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.1.2/gcc/config/s390/linux.h.orig 2006-12-12 15:24:07.000000000 +0000
@@ -0,0 +1,107 @@
+/* Definitions for Linux for S/390.
+ Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
+ Contributed by Hartmut Penner (hpenner@de.ibm.com) and
+ Ulrich Weigand (uweigand@de.ibm.com).
+
+This file is part of GCC.
+
+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 2, 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.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING. If not, write to the Free
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA. */
+
+#ifndef _LINUX_H
+#define _LINUX_H
+
+/* Target specific version string. */
+
+#ifdef DEFAULT_TARGET_64BIT
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (Linux for zSeries)");
+#else
+#undef TARGET_VERSION
+#define TARGET_VERSION fprintf (stderr, " (Linux for S/390)");
+#endif
+
+
+/* Target specific type definitions. */
+
+/* ??? Do we really want long as size_t on 31-bit? */
+#undef SIZE_TYPE
+#define SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "long unsigned int")
+#undef PTRDIFF_TYPE
+#define PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
+
+#undef WCHAR_TYPE
+#define WCHAR_TYPE "int"
+#undef WCHAR_TYPE_SIZE
+#define WCHAR_TYPE_SIZE 32
+
+
+/* Target specific preprocessor settings. */
+
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ LINUX_TARGET_OS_CPP_BUILTINS(); \
+ if (flag_pic) \
+ { \
+ builtin_define ("__PIC__"); \
+ builtin_define ("__pic__"); \
+ } \
+ } \
+ while (0)
+
+
+/* Target specific assembler settings. */
+
+#undef ASM_SPEC
+#define ASM_SPEC "%{m31&m64}%{mesa&mzarch}%{march=*}"
+
+
+/* Target specific linker settings. */
+
+#ifdef DEFAULT_TARGET_64BIT
+#define MULTILIB_DEFAULTS { "m64" }
+#else
+#define MULTILIB_DEFAULTS { "m31" }
+#endif
+
+#undef LINK_SPEC
+#define LINK_SPEC \
+ "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
+ %{shared:-shared} \
+ %{!shared: \
+ %{static:-static} \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker: \
+ %{m31:-dynamic-linker /lib/ld.so.1} \
+ %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
+
+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+#define MD_UNWIND_SUPPORT "config/s390/linux-unwind.h"
+
+#ifdef TARGET_LIBC_PROVIDES_SSP
+/* s390 glibc provides __stack_chk_guard in 0x14(tp),
+ s390x glibc provides it at 0x28(tp). */
+#define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14)
+#endif
+
+/* Define if long doubles should be mangled as 'g'. */
+#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
+
+#endif
diff -Naur gcc-4.1.2.orig/gcc/config/sh/linux.h gcc-4.1.2/gcc/config/sh/linux.h
--- gcc-4.1.2.orig/gcc/config/sh/linux.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/sh/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -60,7 +60,7 @@
"%{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}"
/* Output assembler code to STREAM to call the profiler. */
diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux64.h gcc-4.1.2/gcc/config/sparc/linux64.h
--- gcc-4.1.2.orig/gcc/config/sparc/linux64.h 2006-02-11 08:38:51.000000000 +0000
+++ gcc-4.1.2/gcc/config/sparc/linux64.h 2011-09-01 17:11:11.000000000 +0000
@@ -162,21 +162,21 @@
{ "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
{ "link_arch", LINK_ARCH_SPEC },
-#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}} \
"
-#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \
%{static:-static}}} \
"
@@ -252,12 +252,12 @@
#else /* !SPARC_BI_ARCH */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
+#define LINK_SPEC "-m elf64_sparc -Y P,/tools/lib64 %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib64/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib64/ld-linux.so.2}} \
%{static:-static}}} \
%{mlittle-endian:-EL} \
%{!mno-relax:%{!r:-relax}} \
diff -Naur gcc-4.1.2.orig/gcc/config/sparc/linux.h gcc-4.1.2/gcc/config/sparc/linux.h
--- gcc-4.1.2.orig/gcc/config/sparc/linux.h 2006-02-11 08:38:51.000000000 +0000
+++ gcc-4.1.2/gcc/config/sparc/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -126,13 +126,13 @@
/* If ELF is the default format, we should not use /lib/elf. */
#undef LINK_SPEC
-#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
+#define LINK_SPEC "-m elf32_sparc -Y P,/tools/lib %{shared:-shared} \
%{!mno-relax:%{!r:-relax}} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld-linux.so.2}} \
%{static:-static}}}"
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
diff -Naur gcc-4.1.2.orig/gcc/config/xtensa/linux.h gcc-4.1.2/gcc/config/xtensa/linux.h
--- gcc-4.1.2.orig/gcc/config/xtensa/linux.h 2005-06-25 01:22:41.000000000 +0000
+++ gcc-4.1.2/gcc/config/xtensa/linux.h 2011-09-01 17:11:11.000000000 +0000
@@ -50,7 +50,7 @@
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker /tools/lib/ld.so.1}} \
%{static:-static}}}"
#undef LOCAL_LABEL_PREFIX

View File

@@ -0,0 +1,33 @@
Submitted By: Jeremy Huntwork (jhuntwork AT linuxfromscratch DOT org)
Date: 2008-12-05
Initial Package Version: 4.3.2
Upstream Status: See below.
Origin: DIY Linux, See below.
Description: Original patch follows:
# DIY Linux Patch
Date: 2008-09-09
Author: Refer Origin.
Origin: Partial revert of http://gcc.gnu.org/ml/gcc-cvs/2006-11/msg00416.html
Maker: Greg Schafer <gschafer@zip.com.au>
Upstream Status: Not applicable. Tweak only for Temptools phase GCC-Pass2.
Description: Partially revert GCC driver to pre-GCC-4.3 state to allow startfiles to be
found in $prefix when GCC is configured for a non-standard prefix eg: /temptools. Full
background info in thread starting here: http://gcc.gnu.org/ml/gcc/2008-03/msg00095.html
and GCC bugzilla here: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35532
diff -Naur gcc-4.3.0-RC-20080222.orig/gcc/gcc.c gcc-4.3.0-RC-20080222/gcc/gcc.c
--- gcc-4.3.0-RC-20080222.orig/gcc/gcc.c 2008-01-24 18:57:12.000000000 +0000
+++ gcc-4.3.0-RC-20080222/gcc/gcc.c 2008-03-02 06:07:36.000000000 +0000
@@ -6370,6 +6370,11 @@
machine_suffix,
standard_startfile_prefix, NULL),
NULL, PREFIX_PRIORITY_LAST, 0, 1);
+ add_prefix (&startfile_prefixes,
+ concat (standard_exec_prefix,
+ machine_suffix,
+ standard_startfile_prefix, NULL),
+ NULL, PREFIX_PRIORITY_LAST, 0, 1);
}
/* Sysrooted prefixes are relocated because target_system_root is

View File

@@ -1,45 +0,0 @@
--- gcc-4.0.0/libstdc++-v3/src/Makefile.am
+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am
@@ -214,6 +214,10 @@
$(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
+install-exec-local:
+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
+
# Added bits to build debug library.
if GLIBCXX_BUILD_DEBUG
all-local: build_debug
--- gcc-4.0.0/libstdc++-v3/src/Makefile.in
+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in
@@ -625,7 +625,7 @@
install-data-am: install-data-local
-install-exec-am: install-toolexeclibLTLIBRARIES
+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
install-info: install-info-am
@@ -664,7 +664,7 @@
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-info-am \
- uninstall-toolexeclibLTLIBRARIES
+ uninstall-toolexeclibLTLIBRARIES install-exec-local
@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP)
@GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
@@ -743,6 +743,11 @@
install_debug:
(cd ${debugdir} && $(MAKE) \
toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
+
+install-exec-local:
+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -1,22 +0,0 @@
diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am
--- gcc-4.0.0-100/libstdc++-v3/fragment.am 2004-10-25 15:32:40.000000000 -0500
+++ gcc-4.0.0/libstdc++-v3/fragment.am 2005-04-28 21:48:43.000000000 -0500
@@ -18,5 +18,5 @@
$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
# -I/-D flags to pass when compiling.
-AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am
--- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am 2003-08-27 16:29:42.000000000 -0500
+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am 2005-04-28 21:48:43.000000000 -0500
@@ -32,7 +32,7 @@
libmath_la_SOURCES = stubs.c
-AM_CPPFLAGS = $(CANADIAN_INCLUDES)
+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
# Only compiling "C" sources in this directory.
LIBTOOL = @LIBTOOL@ --tag CC

View File

@@ -1,553 +0,0 @@
--- gcc-4.0.2/gcc/config/t-linux-uclibc
+++ gcc-4.0.2/gcc/config/t-linux-uclibc
@@ -0,0 +1,5 @@
+# Remove glibc specific files added in t-linux
+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
+
+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
--- gcc-4.0.2/gcc/config.gcc
+++ gcc-4.0.2/gcc/config.gcc
@@ -1778,7 +1778,7 @@
;;
sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
- sh-*-linux* | sh[346lbe]*-*-linux* | \
+ sh*-*-linux* | sh[346lbe]*-*-linux* | \
sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
sh64-*-netbsd* | sh64l*-*-netbsd*)
tmake_file="${tmake_file} sh/t-sh sh/t-elf"
@@ -2234,10 +2234,16 @@
*)
echo "*** Configuration ${target} not supported" 1>&2
exit 1
;;
esac
+
+# Rather than hook into each target, just do it after all the linux
+# targets have been processed
+case ${target} in
+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
+esac
case ${target} in
i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
tmake_file="${tmake_file} i386/t-gmm_malloc"
;;
--- gcc-4.0.2/gcc/config/alpha/linux-elf.h
+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h
@@ -27,7 +27,11 @@
#define SUBTARGET_EXTRA_SPECS \
{ "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#endif
#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \
%{O*:-O3} %{!O*:-O1} \
--- gcc-4.0.2/gcc/config/arm/linux-elf.h
+++ gcc-4.0.2/gcc/config/arm/linux-elf.h
@@ -81,14 +81,19 @@
#define ENDFILE_SPEC \
"%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "%{h*} %{version:-v} \
%{b} %{Wl,*:%*} \
%{static:-Bstatic} \
%{shared:-shared} \
%{symbolic:-Bsymbolic} \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
-X \
%{mbig-endian:-EB}" \
SUBTARGET_EXTRA_LINK_SPEC
--- gcc-4.0.2/gcc/config/cris/linux.h
+++ gcc-4.0.2/gcc/config/cris/linux.h
@@ -79,6 +79,25 @@
#undef CRIS_DEFAULT_CPU_VERSION
#define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+#ifdef USE_UCLIBC
+
+#undef CRIS_SUBTARGET_VERSION
+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
+
+#undef CRIS_LINK_SUBTARGET_SPEC
+#define CRIS_LINK_SUBTARGET_SPEC \
+ "-mcrislinux\
+ -rpath-link include/asm/../..%s\
+ %{shared} %{static}\
+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
+ %{!shared: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
+ %{!r:%{O2|O3: --gc-sections}}"
+
+#else /* USE_UCLIBC */
+
#undef CRIS_SUBTARGET_VERSION
#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
@@ -93,6 +112,8 @@
%{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
%{!r:%{O2|O3: --gc-sections}}"
+#endif /* USE_UCLIBC */
+
/* Node: Run-time Target */
--- gcc-4.0.2/gcc/config/i386/linux.h
+++ gcc-4.0.2/gcc/config/i386/linux.h
@@ -107,6 +107,11 @@
#define LINK_EMULATION "elf_i386"
#define DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#ifdef USE_UCLIBC
+#undef DYNAMIC_LINKER
+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#endif
+
#undef SUBTARGET_EXTRA_SPECS
#define SUBTARGET_EXTRA_SPECS \
{ "link_emulation", LINK_EMULATION },\
--- gcc-4.0.2/gcc/config/i386/linux64.h
+++ gcc-4.0.2/gcc/config/i386/linux64.h
@@ -54,14 +54,21 @@
When the -shared link option is used a final link is not being
done. */
+#ifdef USE_UCLIBC
+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
+#else
+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
%{static:-static}}"
#define MULTILIB_DEFAULTS { "m64" }
--- gcc-4.0.2/gcc/config/ia64/linux.h
+++ gcc-4.0.2/gcc/config/ia64/linux.h
@@ -37,13 +37,18 @@
/* Define this for shared library support because it isn't in the main
linux.h file. */
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "\
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}}"
--- gcc-4.0.2/gcc/config/m68k/linux.h
+++ gcc-4.0.2/gcc/config/m68k/linux.h
@@ -127,12 +127,17 @@
/* If ELF is the default format, we should not use /lib/elf. */
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "-m m68kelf %{shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static}}"
/* For compatibility with linux/a.out */
--- gcc-4.0.2/gcc/config/mips/linux.h
+++ gcc-4.0.2/gcc/config/mips/linux.h
@@ -108,14 +108,19 @@
/* Borrowed from sparc/linux.h */
#undef LINK_SPEC
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
+#endif
#define LINK_SPEC \
"%(endian_spec) \
%{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}}}"
#undef SUBTARGET_ASM_SPEC
--- gcc-4.0.2/gcc/config/pa/pa-linux.h
+++ gcc-4.0.2/gcc/config/pa/pa-linux.h
@@ -82,13 +82,18 @@
/* Define this for shared library support because it isn't in the main
linux.h file. */
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "\
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}}"
/* glibc's profiling functions don't need gcc to allocate counters. */
--- gcc-4.0.2/gcc/config/rs6000/linux.h
+++ gcc-4.0.2/gcc/config/rs6000/linux.h
@@ -69,7 +69,11 @@
#define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
#undef LINK_OS_DEFAULT_SPEC
+#ifdef USE_UCLIBC
+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
+#else
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+#endif
#define LINK_GCC_C_SEQUENCE_SPEC \
"%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
--- gcc-4.0.2/gcc/config/rs6000/sysv4.h
+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h
@@ -949,6 +949,7 @@
mcall-linux : %(link_os_linux) ; \
mcall-gnu : %(link_os_gnu) ; \
mcall-netbsd : %(link_os_netbsd) ; \
+ mcall-linux-uclibc : %(link_os_linux_uclibc); \
mcall-openbsd: %(link_os_openbsd) ; \
: %(link_os_default) }"
@@ -1127,6 +1128,10 @@
%{rdynamic:-export-dynamic} \
%{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
+
#if defined(HAVE_LD_EH_FRAME_HDR)
# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
#endif
@@ -1293,6 +1298,7 @@
{ "link_os_sim", LINK_OS_SIM_SPEC }, \
{ "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \
{ "link_os_linux", LINK_OS_LINUX_SPEC }, \
+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \
{ "link_os_gnu", LINK_OS_GNU_SPEC }, \
{ "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \
{ "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \
--- gcc-4.0.2/gcc/config/s390/linux.h
+++ gcc-4.0.2/gcc/config/s390/linux.h
@@ -77,6 +77,13 @@
#define MULTILIB_DEFAULTS { "m31" }
#endif
+#ifdef USE_UCLIBC
+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
+#else
+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
+#endif
#undef LINK_SPEC
#define LINK_SPEC \
"%{m31:-m elf_s390}%{m64:-m elf64_s390} \
@@ -86,8 +93,8 @@
%{!static: \
%{rdynamic:-export-dynamic} \
%{!dynamic-linker: \
- %{m31:-dynamic-linker /lib/ld.so.1} \
- %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
--- gcc-4.0.2/gcc/config/sh/linux.h
+++ gcc-4.0.2/gcc/config/sh/linux.h
@@ -67,11 +67,16 @@
#undef SUBTARGET_LINK_EMUL_SUFFIX
#define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
#undef SUBTARGET_LINK_SPEC
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#endif
#define SUBTARGET_LINK_SPEC \
"%{shared:-shared} \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}"
#undef LIB_SPEC
--- gcc-4.0.2/gcc/config/sparc/linux.h
+++ gcc-4.0.2/gcc/config/sparc/linux.h
@@ -130,14 +130,19 @@
/* If ELF is the default format, we should not use /lib/elf. */
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#endif
#undef LINK_SPEC
#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
%{!mno-relax:%{!r:-relax}} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}}}"
/* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
--- gcc-4.0.2/gcc/config/sparc/linux64.h
+++ gcc-4.0.2/gcc/config/sparc/linux64.h
@@ -167,12 +166,17 @@
{ "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \
{ "link_arch", LINK_ARCH_SPEC },
+#ifdef USE_UCLIBC
+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+#else
+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+#endif
#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
%{!shared: \
%{!ibcs: \
%{!static: \
%{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
%{static:-static}}} \
"
--- gcc-4.0.2/libtool.m4
+++ gcc-4.0.2/libtool.m4
@@ -682,6 +682,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
[lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
--- gcc-4.0.2/ltconfig
+++ gcc-4.0.2/ltconfig
@@ -603,6 +603,7 @@
# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
case $host_os in
+linux-uclibc*) ;;
linux-gnu*) ;;
linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
esac
@@ -1274,6 +1275,23 @@
dynamic_linker='GNU/Linux ld.so'
;;
+linux-uclibc*)
+ version_type=linux
+ need_lib_prefix=no
+ need_version=no
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+ soname_spec='${libname}${release}.so$major'
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+ shlibpath_var=LD_LIBRARY_PATH
+ shlibpath_overrides_runpath=no
+ # This implies no fast_install, which is unacceptable.
+ # Some rework will be needed to allow for fast_install
+ # before this can be enabled.
+ hardcode_into_libs=yes
+ # Assume using the uClibc dynamic linker.
+ dynamic_linker="uClibc ld.so"
+ ;;
+
netbsd*)
need_lib_prefix=no
need_version=no
--- gcc-4.0.2/libffi/configure
+++ gcc-4.0.2/libffi/configure
@@ -3457,6 +3457,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/libgfortran/configure
+++ gcc-4.0.2/libgfortran/configure
@@ -3681,6 +3681,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/libjava/configure
+++ gcc-4.0.2/libjava/configure
@@ -4351,6 +4351,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/libmudflap/configure
+++ gcc-4.0.2/libmudflap/configure
@@ -5380,6 +5380,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/libobjc/configure
+++ gcc-4.0.2/libobjc/configure
@@ -3283,6 +3283,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/boehm-gc/configure
+++ gcc-4.0.2/boehm-gc/configure
@@ -4320,6 +4320,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
--- gcc-4.0.2/configure
+++ gcc-4.0.2/configure
@@ -1141,7 +1141,7 @@
;;
"")
case "${target}" in
- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
# Enable libmudflap by default in GNU and friends.
;;
*-*-freebsd*)
--- gcc-4.0.2/configure.in
+++ gcc-4.0.2/configure.in
@@ -350,7 +350,7 @@
;;
"")
case "${target}" in
- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
# Enable libmudflap by default in GNU and friends.
;;
*-*-freebsd*)
--- gcc-4.0.2/contrib/regression/objs-gcc.sh
+++ gcc-4.0.2/contrib/regression/objs-gcc.sh
@@ -105,6 +105,10 @@
then
make all-gdb all-dejagnu all-ld || exit 1
make install-gdb install-dejagnu install-ld || exit 1
+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
+ then
+ make all-gdb all-dejagnu all-ld || exit 1
+ make install-gdb install-dejagnu install-ld || exit 1
elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
make bootstrap || exit 1
make install || exit 1
--- gcc-4.0.2/zlib/configure
+++ gcc-4.0.2/zlib/configure
@@ -3426,6 +3426,11 @@
lt_cv_deplibs_check_method=pass_all
;;
+linux-uclibc*)
+ lt_cv_deplibs_check_method=pass_all
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
+ ;;
+
netbsd* | knetbsd*-gnu)
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,52 @@
2007-07-22 Roland McGrath <roland@redhat.com>
* config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
non-relocatable link.
* config/linux.h (LINK_EH_SPEC): Likewise.
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
--- gcc/config/rs6000/sysv4.h.~1~
+++ gcc/config/rs6000/sysv4.h
@@ -906,7 +906,7 @@ extern int fixuplabelno;
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
#if defined(HAVE_LD_EH_FRAME_HDR)
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
--- gcc/config/linux.h.~1~
+++ gcc/config/linux.h
@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */
} while (0)
#if defined(HAVE_LD_EH_FRAME_HDR)
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
/* Define this so we can compile MS code for use with WINE. */
--- gcc/config/alpha/elf.h.~1~
+++ gcc/config/alpha/elf.h
@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu
I imagine that other systems will catch up. In the meantime, it
doesn't harm to make sure that the data exists to be used later. */
#if defined(HAVE_LD_EH_FRAME_HDR)
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
/* A C statement (sans semicolon) to output to the stdio stream STREAM
--- gcc/config/ia64/linux.h.~1~
+++ gcc/config/ia64/linux.h
@@ -56,7 +56,7 @@ do { \
Signalize that because we have fde-glibc, we don't need all C shared libs
linked against -lgcc_s. */
#undef LINK_EH_SPEC
-#define LINK_EH_SPEC ""
+#define LINK_EH_SPEC "%{!r:--build-id} "
#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"

View File

@@ -0,0 +1,102 @@
2007-10-02 Jakub Jelinek <jakub@redhat.com>
* decl.c (duplicate_decls): When redeclaring a builtin function,
keep the merged decl builtin whenever types match, even if new
decl defines a function.
* gcc.dg/builtins-65.c: New test.
* g++.dg/ext/builtin10.C: New test.
--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
+++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
@@ -2001,23 +2001,21 @@ duplicate_decls (tree newdecl, tree oldd
DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
}
+ /* If redeclaring a builtin function, it stays built in. */
+ if (types_match && DECL_BUILT_IN (olddecl))
+ {
+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
+ /* If we're keeping the built-in definition, keep the rtl,
+ regardless of declaration matches. */
+ COPY_DECL_RTL (olddecl, newdecl);
+ }
if (new_defines_function)
/* If defining a function declared with other language
linkage, use the previously declared language linkage. */
SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
else if (types_match)
{
- /* If redeclaring a builtin function, and not a definition,
- it stays built in. */
- if (DECL_BUILT_IN (olddecl))
- {
- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
- /* If we're keeping the built-in definition, keep the rtl,
- regardless of declaration matches. */
- COPY_DECL_RTL (olddecl, newdecl);
- }
-
DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
/* Don't clear out the arguments if we're just redeclaring a
function. */
--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200
+++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef __SIZE_TYPE__ size_t;
+extern void __chk_fail (void);
+extern int snprintf (char *, size_t, const char *, ...);
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
+{
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
+ __chk_fail ();
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
+}
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
+
+char buf[10];
+
+int
+main (void)
+{
+ snprintf (buf, 10, "%d%d\n", 10, 10);
+ return 0;
+}
+
+/* { dg-final { scan-assembler "mysnprintf" } } */
+/* { dg-final { scan-assembler-not "__chk_fail" } } */
--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200
+++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200
@@ -0,0 +1,27 @@
+// { dg-do compile }
+// { dg-options "-O2" }
+
+typedef __SIZE_TYPE__ size_t;
+extern "C" {
+extern void __chk_fail (void);
+extern int snprintf (char *, size_t, const char *, ...);
+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
+{
+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
+ __chk_fail ();
+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
+}
+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
+}
+
+char buf[10];
+
+int
+main (void)
+{
+ snprintf (buf, 10, "%d%d\n", 10, 10);
+ return 0;
+}
+
+// { dg-final { scan-assembler "mysnprintf" } }
+// { dg-final { scan-assembler-not "__chk_fail" } }

View File

@@ -0,0 +1,61 @@
Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486
hardware isn't supported because NPTL doesn't support it anyway.
--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then
;;
# Note that bare i386 is not included here. We need cmpxchg.
- i[456]86-*-linux*)
+ i[3456]86-*-linux*)
config_path="linux/x86 linux posix"
case " ${CC} ${CFLAGS} " in
*" -m64 "*)
;;
*)
if test -z "$with_arch"; then
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
fi
esac
;;
@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then
config_path="linux/x86 linux posix"
case " ${CC} ${CFLAGS} " in
*" -m32 "*)
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
;;
esac
;;
--- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100
+++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100
@@ -35,6 +35,27 @@
#include <new>
#include <ext/atomicity.h>
#include <ext/concurrence.h>
+#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS_4
+# define _GLIBCXX_ATOMIC_BUILTINS_4 1
+# define __sync_val_compare_and_swap(a, b, c) \
+ ({ \
+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
+ int sltas; \
+ __asm __volatile ("lock; cmpxchgl %3, (%1)" \
+ : "=a" (sltas) \
+ : "r" (a), "0" (b), "r" (c) : "memory"); \
+ sltas; \
+ })
+# define __sync_lock_test_and_set(a, b) \
+ ({ \
+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
+ int sltas; \
+ __asm __volatile ("xchgl (%1), %0" \
+ : "=r" (sltas) \
+ : "r" (a), "0" (b) : "memory"); \
+ sltas; \
+ })
+#endif
#if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
&& defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
# include <climits>

View File

@@ -0,0 +1,27 @@
libtool sucks.
--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100
+++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200
@@ -5394,6 +5394,7 @@ EOF
rpath="$finalize_rpath"
test "$mode" != relink && rpath="$compile_rpath$rpath"
for libdir in $rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
@@ -6071,6 +6072,7 @@ EOF
rpath=
hardcode_libdirs=
for libdir in $compile_rpath $finalize_rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then
@@ -6120,6 +6122,7 @@ EOF
rpath=
hardcode_libdirs=
for libdir in $finalize_rpath; do
+ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
if test -n "$hardcode_libdir_flag_spec"; then
if test -n "$hardcode_libdir_separator"; then
if test -z "$hardcode_libdirs"; then

View File

@@ -0,0 +1,52 @@
2010-02-08 Roland McGrath <roland@redhat.com>
* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
linker.
* config/linux.h (LINK_EH_SPEC): Likewise.
* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
--- gcc/config/alpha/elf.h.~1~
+++ gcc/config/alpha/elf.h
@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu
I imagine that other systems will catch up. In the meantime, it
doesn't harm to make sure that the data exists to be used later. */
#if defined(HAVE_LD_EH_FRAME_HDR)
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
/* A C statement (sans semicolon) to output to the stdio stream STREAM
--- gcc/config/ia64/linux.h.~1~
+++ gcc/config/ia64/linux.h
@@ -58,7 +58,7 @@ do { \
Signalize that because we have fde-glibc, we don't need all C shared libs
linked against -lgcc_s. */
#undef LINK_EH_SPEC
-#define LINK_EH_SPEC "%{!r:--build-id} "
+#define LINK_EH_SPEC "--no-add-needed %{!r:--build-id} "
#define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
--- gcc/config/linux.h.~1~
+++ gcc/config/linux.h
@@ -89,7 +89,7 @@ see the files COPYING3 and COPYING.RUNTI
} while (0)
#if defined(HAVE_LD_EH_FRAME_HDR)
-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
/* Define this so we can compile MS code for use with WINE. */
--- gcc/config/rs6000/sysv4.h.~1~
+++ gcc/config/rs6000/sysv4.h
@@ -917,7 +917,7 @@ SVR4_ASM_SPEC \
%{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
#if defined(HAVE_LD_EH_FRAME_HDR)
-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} %{!r:--build-id} "
#endif
#define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \

View File

@@ -0,0 +1,153 @@
2007-11-06 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/33763
* gcc.dg/pr33763.c: New test.
* g++.dg/opt/inline13.C: New test.
2007-11-06 Jan Hubicka <jh@suse.cz>
PR tree-optimization/33763
* tree-inline.c (expand_call_inline): Silently ignore always_inline
attribute for redefined extern inline functions.
--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100
+++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100
@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp
goto egress;
if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
+ /* For extern inline functions that get redefined we always
+ silently ignored alway_inline flag. Better behaviour would
+ be to be able to keep both bodies and use extern inline body
+ for inlining, but we can't do that because frontends overwrite
+ the body. */
+ && !cg_edge->callee->local.redefined_extern_inline
/* Avoid warnings during early inline pass. */
&& cgraph_global_info_ready)
{
--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100
+++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100
@@ -0,0 +1,60 @@
+/* PR tree-optimization/33763 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef struct
+{
+ void *a;
+ void *b;
+} T;
+extern void *foo (const char *, const char *);
+extern void *bar (void *, const char *, T);
+extern int baz (const char *, int);
+
+extern inline __attribute__ ((always_inline, gnu_inline)) int
+baz (const char *x, int y)
+{
+ return 2;
+}
+
+int
+baz (const char *x, int y)
+{
+ return 1;
+}
+
+int xa, xb;
+
+static void *
+inl (const char *x, const char *y)
+{
+ T t = { &xa, &xb };
+ int *f = (int *) __builtin_malloc (sizeof (int));
+ const char *z;
+ int o = 0;
+ void *r = 0;
+
+ for (z = y; *z; z++)
+ {
+ if (*z == 'r')
+ o |= 1;
+ if (*z == 'w')
+ o |= 2;
+ }
+ if (o == 1)
+ *f = baz (x, 0);
+ if (o == 2)
+ *f = baz (x, 1);
+ if (o == 3)
+ *f = baz (x, 2);
+
+ if (o && *f > 0)
+ r = bar (f, "w", t);
+ return r;
+}
+
+void *
+foo (const char *x, const char *y)
+{
+ return inl (x, y);
+}
--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100
+++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100
@@ -0,0 +1,60 @@
+// PR tree-optimization/33763
+// { dg-do compile }
+// { dg-options "-O2" }
+
+typedef struct
+{
+ void *a;
+ void *b;
+} T;
+extern void *foo (const char *, const char *);
+extern void *bar (void *, const char *, T);
+extern int baz (const char *, int);
+
+extern inline __attribute__ ((always_inline, gnu_inline)) int
+baz (const char *x, int y)
+{
+ return 2;
+}
+
+int
+baz (const char *x, int y)
+{
+ return 1;
+}
+
+int xa, xb;
+
+static void *
+inl (const char *x, const char *y)
+{
+ T t = { &xa, &xb };
+ int *f = (int *) __builtin_malloc (sizeof (int));
+ const char *z;
+ int o = 0;
+ void *r = 0;
+
+ for (z = y; *z; z++)
+ {
+ if (*z == 'r')
+ o |= 1;
+ if (*z == 'w')
+ o |= 2;
+ }
+ if (o == 1)
+ *f = baz (x, 0);
+ if (o == 2)
+ *f = baz (x, 1);
+ if (o == 3)
+ *f = baz (x, 2);
+
+ if (o && *f > 0)
+ r = bar (f, "w", t);
+ return r;
+}
+
+void *
+foo (const char *x, const char *y)
+{
+ return inl (x, y);
+}

View File

@@ -0,0 +1,34 @@
2007-10-16 Jakub Jelinek <jakub@redhat.com>
* Makefile.am (libgcj_tools_la_LIBADD): Add.
* Makefile.in: Regenerated.
--- libjava/Makefile.am.jj 2009-05-06 08:14:50.000000000 +0200
+++ libjava/Makefile.am 2009-05-06 10:26:43.000000000 +0200
@@ -314,6 +314,8 @@ libgcj_tools_la_SOURCES = classpath/tool
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \
-fno-bootstrap-classes -fno-indirect-classes \
-fsource-filename=$(here)/classpath/tools/all-classes.lst
+## See jv_convert_LDADD.
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
--- libjava/Makefile.in.jj 2009-05-06 08:14:49.000000000 +0200
+++ libjava/Makefile.in 2009-05-06 10:27:18.000000000 +0200
@@ -160,7 +160,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
@XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
-libgcj_tools_la_LIBADD =
am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
@INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \
@@ -1041,6 +1040,7 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS
-fno-bootstrap-classes -fno-indirect-classes \
-fsource-filename=$(here)/classpath/tools/all-classes.lst
+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)

View File

@@ -0,0 +1,153 @@
2010-07-22 Jakub Jelinek <jakub@redhat.com>
* gimplify.c (enum gimplify_omp_var_data): Add
GOVD_THREADPRIVATE_WARNED.
(gimplify_bind_expr): Add GOVD_LOCAL | GOVD_SEEN even for global vars.
(omp_notice_threadprivate_variable): Note used threadprivate vars
with current function's context in shared clauses.
(gimplify_adjust_omp_clauses_1): Allow globals with current function's
context in taskreg shared clause.
* omp-low.c (lower_rec_input_clauses): For function-local is_global_var
VAR_DECLs in shared clauses add a decl copy with DECL_VALUE_EXPR
pointing to the original.
* trans-openmp.c (gfc_omp_private_debug_clause): Return false for
threadprivate decls.
* gcc.dg/gomp/tls-3.c: New test.
--- gcc/fortran/trans-openmp.c.jj 2010-06-24 21:47:09.908230044 +0200
+++ gcc/fortran/trans-openmp.c 2010-07-26 10:45:15.830229443 +0200
@@ -351,6 +351,18 @@ gfc_omp_disregard_value_expr (tree decl,
bool
gfc_omp_private_debug_clause (tree decl, bool shared)
{
+ if (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
+ {
+ if (DECL_THREAD_LOCAL_P (decl))
+ return false;
+ if (DECL_HAS_VALUE_EXPR_P (decl))
+ {
+ tree value = get_base_address (DECL_VALUE_EXPR (decl));
+ if (value && DECL_P (value) && DECL_THREAD_LOCAL_P (value))
+ return false;
+ }
+ }
+
if (GFC_DECL_CRAY_POINTEE (decl))
return true;
--- gcc/gimplify.c.jj 2010-07-09 09:01:37.049604412 +0200
+++ gcc/gimplify.c 2010-07-26 10:50:05.646291216 +0200
@@ -66,6 +66,7 @@ enum gimplify_omp_var_data
GOVD_LOCAL = 128,
GOVD_DEBUG_PRIVATE = 256,
GOVD_PRIVATE_OUTER_REF = 512,
+ GOVD_THREADPRIVATE_WARNED = 1024,
GOVD_DATA_SHARE_CLASS = (GOVD_SHARED | GOVD_PRIVATE | GOVD_FIRSTPRIVATE
| GOVD_LASTPRIVATE | GOVD_REDUCTION | GOVD_LOCAL)
};
@@ -1234,7 +1235,7 @@ gimplify_bind_expr (tree *expr_p, gimple
struct gimplify_omp_ctx *ctx = gimplify_omp_ctxp;
/* Mark variable as local. */
- if (ctx && !is_global_var (t)
+ if (ctx
&& (! DECL_SEEN_IN_BIND_EXPR_P (t)
|| splay_tree_lookup (ctx->variables,
(splay_tree_key) t) == NULL))
@@ -5339,18 +5340,36 @@ omp_notice_threadprivate_variable (struc
{
splay_tree_node n;
- if (ctx->region_type != ORT_UNTIED_TASK)
+ while (ctx && ctx->region_type == ORT_WORKSHARE)
+ {
+ n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl);
+ if (n != NULL)
+ {
+ gcc_assert (n->value & GOVD_LOCAL);
+ return false;
+ }
+ ctx = ctx->outer_context;
+ }
+ if (ctx == NULL)
return false;
+
n = splay_tree_lookup (ctx->variables, (splay_tree_key)decl);
if (n == NULL)
+ n = splay_tree_insert (ctx->variables, (splay_tree_key)decl,
+ DECL_CONTEXT (decl) == current_function_decl
+ ? GOVD_SHARED | GOVD_SEEN : 0);
+ if (ctx->region_type == ORT_UNTIED_TASK
+ && (n->value & GOVD_THREADPRIVATE_WARNED) == 0)
{
error ("threadprivate variable %qs used in untied task",
IDENTIFIER_POINTER (DECL_NAME (decl)));
error ("%Henclosing task", &ctx->location);
- splay_tree_insert (ctx->variables, (splay_tree_key)decl, 0);
+ n->value |= GOVD_THREADPRIVATE_WARNED;
}
if (decl2)
- splay_tree_insert (ctx->variables, (splay_tree_key)decl2, 0);
+ splay_tree_insert (ctx->variables, (splay_tree_key)decl2,
+ DECL_CONTEXT (decl2) == current_function_decl
+ ? GOVD_SHARED | GOVD_SEEN : 0);
return false;
}
@@ -5779,7 +5798,9 @@ gimplify_adjust_omp_clauses_1 (splay_tre
break;
ctx = ctx->outer_context;
}
- if (ctx == NULL)
+ if (ctx == NULL
+ && (DECL_CONTEXT (decl) != current_function_decl
+ || gimplify_omp_ctxp->region_type == ORT_WORKSHARE))
return 0;
}
code = OMP_CLAUSE_SHARED;
--- gcc/omp-low.c.jj 2010-06-11 11:06:00.913659301 +0200
+++ gcc/omp-low.c 2010-07-26 10:45:15.866229447 +0200
@@ -2222,6 +2222,17 @@ lower_rec_input_clauses (tree clauses, g
continue;
break;
case OMP_CLAUSE_SHARED:
+ if (pass == 0
+ && is_global_var (OMP_CLAUSE_DECL (c))
+ && (DECL_CONTEXT (OMP_CLAUSE_DECL (c))
+ == current_function_decl)
+ && is_taskreg_ctx (ctx)
+ && !DECL_IGNORED_P (OMP_CLAUSE_DECL (c)))
+ {
+ new_var = omp_copy_decl_1 (OMP_CLAUSE_DECL (c), ctx);
+ SET_DECL_VALUE_EXPR (new_var, OMP_CLAUSE_DECL (c));
+ DECL_HAS_VALUE_EXPR_P (new_var) = 1;
+ }
if (maybe_lookup_decl (OMP_CLAUSE_DECL (c), ctx) == NULL)
{
gcc_assert (is_global_var (OMP_CLAUSE_DECL (c)));
--- gcc/testsuite/gcc.dg/gomp/tls-3.c.jj 2010-07-26 10:45:15.868228753 +0200
+++ gcc/testsuite/gcc.dg/gomp/tls-3.c 2010-07-26 10:45:15.868228753 +0200
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target tls_native } */
+
+int thr;
+#pragma omp threadprivate(thr)
+
+void
+foo (void)
+{
+ #pragma omp task untied /* { dg-error "enclosing task" } */
+ {
+ static int thr2;
+ #pragma omp threadprivate(thr2)
+ static int thr3;
+ #pragma omp threadprivate(thr3)
+ thr++; /* { dg-error "used in untied task" } */
+ thr2++; /* { dg-error "used in untied task" } */
+ thr++;
+ thr2++;
+ }
+}

View File

@@ -0,0 +1,74 @@
2010-07-07 Jakub Jelinek <jakub@redhat.com>
* tree-sra.c (sra_build_assignment): Don't add BIT_XOR_EXPR/MINUS_EXPR
of signbit if signbit is the most significant bit of utype already.
* gcc.c-torture/execute/20100707-1.c: New test.
--- gcc/tree-sra.c.jj 2010-05-13 13:08:52.000000000 +0200
+++ gcc/tree-sra.c 2010-07-06 19:50:09.000000000 +0200
@@ -2211,7 +2211,10 @@ sra_build_assignment (tree dst, tree src
/* Perform sign extension, if required.
??? This should never be necessary. */
- if (!unsignedp)
+ if (!unsignedp
+ && (TREE_INT_CST_LOW (width) != TYPE_PRECISION (utype)
+ || (TREE_INT_CST_LOW (width)
+ != GET_MODE_BITSIZE (TYPE_MODE (utype)))))
{
tree signbit = int_const_binop (LSHIFT_EXPR,
build_int_cst_wide (utype, 1, 0),
--- gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-05-27 15:41:40.446237053 +0200
+++ gcc/testsuite/gcc.c-torture/execute/20100707-1.c 2010-07-06 13:55:35.000000000 +0200
@@ -0,0 +1,50 @@
+struct S { int s; };
+struct T { int w; int h; };
+int vr;
+
+inline struct T
+bar (const struct S * x)
+{
+ struct T t;
+ t.w = vr;
+ t.h = x->s;
+ return t;
+}
+
+__attribute__ ((noinline))
+void foo (struct S * w, unsigned char *x, int y, int *z[2])
+{
+ struct T t;
+ int i, j, k;
+ t = bar (w);
+ k = t.w + 2;
+ for (i = 0; i <= t.h; i++)
+ {
+ int *u = z[i > 0] + 1;
+ unsigned char *v;
+ int q = 0;
+ v = x + k * i + 1;
+ for (j = 0; j < t.w; j++)
+ {
+ int m = u[j];
+ if (m > y && !q && v[j - k] != 2)
+ v[j] = 0;
+ }
+ }
+}
+
+unsigned char b[64];
+
+int
+main (void)
+{
+ int v[32], *z[2];
+ struct S s;
+ __builtin_memset (v, 0, sizeof (v));
+ vr = 16;
+ s.s = 16;
+ z[0] = v;
+ z[1] = v;
+ foo (&s, b + 32, -1, z);
+ return 0;
+}

View File

@@ -0,0 +1,51 @@
2010-04-27 Jakub Jelinek <jakub@redhat.com>
* unwind-dw2.c (_Unwind_DebugHook): Add used attribute.
2009-05-27 Tom Tromey <tromey@redhat.com>
* unwind-dw2.c (_Unwind_DebugHook): New function.
(uw_install_context): Call _Unwind_DebugHook.
--- gcc/unwind-dw2.c (revision 147933)
+++ gcc/unwind-dw2.c (revision 147934)
@@ -1473,18 +1473,32 @@ uw_init_context_1 (struct _Unwind_Contex
context->ra = __builtin_extract_return_addr (outer_ra);
}
+static void _Unwind_DebugHook (void *, void *)
+ __attribute__ ((__noinline__, __used__));
+
+/* This function is called during unwinding. It is intended as a hook
+ for a debugger to intercept exceptions. CFA is the CFA of the
+ target frame. HANDLER is the PC to which control will be
+ transferred. */
+static void
+_Unwind_DebugHook (void *cfa __attribute__ ((__unused__)),
+ void *handler __attribute__ ((__unused__)))
+{
+ asm ("");
+}
/* Install TARGET into CURRENT so that we can return to it. This is a
macro because __builtin_eh_return must be invoked in the context of
our caller. */
-#define uw_install_context(CURRENT, TARGET) \
- do \
- { \
- long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
- void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
- __builtin_eh_return (offset, handler); \
- } \
+#define uw_install_context(CURRENT, TARGET) \
+ do \
+ { \
+ long offset = uw_install_context_1 ((CURRENT), (TARGET)); \
+ void *handler = __builtin_frob_return_addr ((TARGET)->ra); \
+ _Unwind_DebugHook ((TARGET)->cfa, handler); \
+ __builtin_eh_return (offset, handler); \
+ } \
while (0)
static long

View File

@@ -0,0 +1,23 @@
--- glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 22:22:41.000000000 +0400
+++ glibc-2.12.2/ports/sysdeps/unix/sysv/linux/arm/sigrestorer.S 2011-09-08 21:44:49.000000000 +0400
@@ -18,16 +18,20 @@
#include <sysdep.h>
+ .text
+
/* If no SA_RESTORER function was specified by the application we use
one of these. This avoids the need for the kernel to synthesise a return
instruction on the stack, which would involve expensive cache flushes. */
ENTRY(__default_sa_restorer)
swi SYS_ify(sigreturn)
+PSEUDO_END (__default_sa_restorer)
#ifdef __NR_rt_sigreturn
ENTRY(__default_rt_sa_restorer)
swi SYS_ify(rt_sigreturn)
+PSEUDO_END (__default_rt_sa_restorer)
#endif

View File

@@ -1,340 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde, 2006-11-22
# Committed-By: Marc Kleine-Budde
#
# Error:
#
# try to compile glibc-ports with sanitized headers
#
# arm-v4t-linux-gnueabi-gcc ../ports/sysdeps/arm/eabi/setfpucw.c -c
#-std=gnu99 -O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants
#-g -Wstrict-prototypes -Wno-uninitialized -D__NO_MATH_INLINES
#-D__LIBC_INTERNAL_MATH_INLINES -DNO_LONG_DOUBLE
#-D_Mlong_double_=double -I../include
#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math
#-I/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build
#-I../ports/sysdeps/arm/elf
#-I../ports/sysdeps/unix/sysv/linux/arm/eabi/nptl
#-I../ports/sysdeps/unix/sysv/linux/arm/eabi
#-I../ports/sysdeps/unix/sysv/linux/arm/nptl
#-I../ports/sysdeps/unix/sysv/linux/arm
#-I../ports/sysdeps/unix/sysv/linux -I../nptl/sysdeps/unix/sysv/linux
#-I../nptl/sysdeps/pthread -I../sysdeps/pthread
#-I../sysdeps/unix/sysv/linux -I../sysdeps/gnu
#-I../sysdeps/unix/common -I../sysdeps/unix/mman
#-I../sysdeps/unix/inet -I../ports/sysdeps/unix/sysv
#-I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv
#-I../ports/sysdeps/unix/arm -I../ports/sysdeps/unix
#-I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix
#-I../ports/sysdeps/arm/eabi -I../ports/sysdeps/arm/nptl
#-I../ports/sysdeps/arm -I../sysdeps/wordsize-32
#-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64
#-I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic
#-I../ports -I../nptl -I.. -I../libio -I. -nostdinc -isystem
#/ptx/work/mkl/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/bin/../lib/gcc/arm-v4t-linux-gnueabi/4.1.1/include
#-isystem
#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/install/arm-v4t-linux-gnueabi/gcc-4.1.1-glibc-2.5-linux-2.6.19-rc6-s/sysroot-arm-v4t-linux-gnueabi/usr/include
#-D_LIBC_REENTRANT -include ../include/libc-symbols.h -o
#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o
#-MD -MP -MF
#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o.dt
#-MT
#/home/mkl/pengutronix/ptxdist/build/OSELAS.Toolchain-trunk-headers/build-target/glibc-2.5-build/math/setfpucw.o
# ../ports/sysdeps/arm/eabi/setfpucw.c:26:26: error: asm/procinfo.h: No such file or directory
# ../ports/sysdeps/arm/eabi/setfpucw.c: In function '__setfpucw':
# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: 'HWCAP_VFP' undeclared (first use in this function)
# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: (Each undeclared identifier is reported only once
# ../ports/sysdeps/arm/eabi/setfpucw.c:31: error: for each function it appears in.)
#
# Description:
#
# http://sourceware.org/ml/libc-ports/2006-10/msg00040.html
#
# State:
#
# added to glibc-ports on 10/31/2006 06:20 PM
#
Date: Tue, 24 Oct 2006 19:25:12 +0000 (UTC)
From: "Joseph S. Myers" <joseph@codesourcery.com>
To: libc-ports@sourceware.org
Subject: Avoid using asm/procinfo.h
I previously noted
<http://sourceware.org/ml/libc-ports/2006-08/msg00023.html> that the
use of <asm/procinfo.h>, a Linux-specific kernel header, in
sysdeps/arm/eabi, is an abstraction violation, and that in principle
all the files in sysdeps/arm/eabi should use sysdep.h not
asm/procinfo.h for HWCAP_VFP.
The ARM kernel maintainers have now declared that <asm/procinfo.h>
should not be used outside the kernel at all (and in particular that
headers_install is correct in not exporting it), and that these
definitions will move to a different kernel header. This gives a
concrete reason for making the change to use glibc's internal
definitions, which this patch does, thereby allowing glibc to build
with the exported headers.
2006-10-24 Joseph S. Myers <joseph@codesourcery.com>
* sysdeps/arm/eabi/fclrexcpt.c: Include <sysdep.h> instead of
<asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP.
* sysdeps/arm/eabi/fedisblxcpt.c: Likewise.
* sysdeps/arm/eabi/feenablxcpt.c: Likewise.
* sysdeps/arm/eabi/fegetenv.c: Likewise.
* sysdeps/arm/eabi/fegetexcept.c: Likewise.
* sysdeps/arm/eabi/fegetround.c: Likewise.
* sysdeps/arm/eabi/feholdexcpt.c: Likewise.
* sysdeps/arm/eabi/fesetenv.c: Likewise.
* sysdeps/arm/eabi/fesetround.c: Likewise.
* sysdeps/arm/eabi/fraiseexcpt.c: Likewise.
* sysdeps/arm/eabi/fsetexcptflg.c: Likewise.
* sysdeps/arm/eabi/ftestexcept.c: Likewise.
* sysdeps/arm/eabi/setfpucw.c: Likewise.
Index: glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fclrexcpt.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fclrexcpt.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
__feclearexcept (int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long int temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fedisblxcpt.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fedisblxcpt.c
@@ -24,12 +24,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
fedisableexcept (int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long int new_exc, old_exc;
Index: glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/feenablxcpt.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/feenablxcpt.c
@@ -24,12 +24,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
feenableexcept (int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long int new_exc, old_exc;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetenv.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetenv.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
__fegetenv (fenv_t *envp)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long int temp;
_FPU_GETCW (temp);
Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetexcept.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetexcept.c
@@ -24,12 +24,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
fegetexcept (void)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fegetround.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fegetround.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
fegetround (void)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned int temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/feholdexcpt.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/feholdexcpt.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
feholdexcept (fenv_t *envp)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned long int temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetenv.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetenv.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
__fesetenv (const fenv_t *envp)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
unsigned int temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fesetround.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fesetround.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
fesetround (int round)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
fpu_control_t temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fraiseexcpt.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fraiseexcpt.c
@@ -24,12 +24,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
feraiseexcept (int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
int fpscr;
const float fp_zero = 0.0, fp_one = 1.0, fp_max = FLT_MAX,
Index: glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/fsetexcptflg.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/fsetexcptflg.c
@@ -24,12 +24,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
__fesetexceptflag (const fexcept_t *flagp, int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
fexcept_t temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/ftestexcept.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/ftestexcept.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
int
fetestexcept (int excepts)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
fexcept_t temp;
Index: glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c
===================================================================
--- glibc-ports-2.5.orig/sysdeps/arm/eabi/setfpucw.c
+++ glibc-ports-2.5/sysdeps/arm/eabi/setfpucw.c
@@ -23,12 +23,12 @@
#include <unistd.h>
#include <ldsodefs.h>
#include <dl-procinfo.h>
-#include <asm/procinfo.h>
+#include <sysdep.h>
void
__setfpucw (fpu_control_t set)
{
- if (GLRO (dl_hwcap) & HWCAP_VFP)
+ if (GLRO (dl_hwcap) & HWCAP_ARM_VFP)
{
fpu_control_t cw;

View File

@@ -0,0 +1,150 @@
From 4a531bb0b3b582cb693de9f76d2d97d970f9a5d5 Mon Sep 17 00:00:00 2001
From: H.J. Lu <hongjiu.lu@intel.com>
Date: Fri, 24 Dec 2010 20:14:37 -0500
Subject: [PATCH] Remove `.ctors' and `.dtors' output sections
---
config.h.in | 3 +
configure.in | 2 +
elf/sofini.c | 2 +
elf/soinit.c | 2 +
sysdeps/i386/init-first.c | 2 +
sysdeps/mach/hurd/i386/init-first.c | 2 +-
sysdeps/mach/hurd/powerpc/init-first.c | 2 +-
sysdeps/sh/init-first.c | 2 +
sysdeps/unix/sysv/linux/init-first.c | 2 +-
9 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/config.h.in b/config.h.in
index 18bf01a..9e797eb 100644
--- a/config.h.in
+++ b/config.h.in
@@ -201,6 +201,9 @@
/* Define if multi-arch DSOs should be generated. */
#undef USE_MULTIARCH
+/* Define if `.ctors' and `.dtors' sections shouldn't be used. */
+#undef NO_CTORS_DTORS_SECTIONS
+
/*
*/
diff --git a/configure.in b/configure.in
index d8cd5f1..ad25b9b 100644
--- a/configure.in
+++ b/configure.in
@@ -1497,6 +1497,8 @@ EOF
rm -f conftest*])
if test $libc_cv_initfini_array != yes; then
AC_MSG_ERROR([Need linker with .init_array/.fini_array support.])
+ elif AC_TRY_COMMAND([${CC-cc} -Wl,--verbose 2>&1|grep SORT_BY_INIT_PRIORITY 1>&AS_MESSAGE_LOG_FD]); then
+ AC_DEFINE(NO_CTORS_DTORS_SECTIONS)
fi
AC_CACHE_CHECK(for libunwind-support in compiler,
diff --git a/elf/sofini.c b/elf/sofini.c
index 5e06f0c..13e74b7 100644
--- a/elf/sofini.c
+++ b/elf/sofini.c
@@ -1,12 +1,14 @@
/* Finalizer module for ELF shared C library. This provides terminating
null pointer words in the `.ctors' and `.dtors' sections. */
+#ifndef NO_CTORS_DTORS_SECTIONS
static void (*const __CTOR_END__[1]) (void)
__attribute__ ((used, section (".ctors")))
= { 0 };
static void (*const __DTOR_END__[1]) (void)
__attribute__ ((used, section (".dtors")))
= { 0 };
+#endif
/* Terminate the frame unwind info section with a 4byte 0 as a sentinel;
this would be the 'length' field in a real FDE. */
diff --git a/elf/soinit.c b/elf/soinit.c
index 6fecbb5..1db676a 100644
--- a/elf/soinit.c
+++ b/elf/soinit.c
@@ -3,6 +3,7 @@
the `.ctors' and `.dtors' sections so the lists are terminated, and
calling those lists of functions. */
+#ifndef NO_CTORS_DTORS_SECTIONS
#include <libc-internal.h>
#include <stdlib.h>
@@ -40,3 +41,4 @@ __libc_fini (void)
void (*_fini_ptr) (void) __attribute__ ((section (".fini_array")))
= &__libc_fini;
+#endif
diff --git a/sysdeps/i386/init-first.c b/sysdeps/i386/init-first.c
index c6355a8..2af042f 100644
--- a/sysdeps/i386/init-first.c
+++ b/sysdeps/i386/init-first.c
@@ -59,7 +59,9 @@ _init (int argc, ...)
{
init (&argc);
+#ifndef NO_CTORS_DTORS_SECTIONS
__libc_global_ctors ();
+#endif
}
#endif
diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c
index f9a7a58..60823bd 100644
--- a/sysdeps/mach/hurd/i386/init-first.c
+++ b/sysdeps/mach/hurd/i386/init-first.c
@@ -92,7 +92,7 @@ posixland_init (int argc, char **argv, char **envp)
__getopt_clean_environment (envp);
#endif
-#ifdef SHARED
+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
__libc_global_ctors ();
#endif
}
diff --git a/sysdeps/mach/hurd/powerpc/init-first.c b/sysdeps/mach/hurd/powerpc/init-first.c
index 20fa1d4..21b5054 100644
--- a/sysdeps/mach/hurd/powerpc/init-first.c
+++ b/sysdeps/mach/hurd/powerpc/init-first.c
@@ -82,7 +82,7 @@ posixland_init (int argc, char **argv, char **envp)
__getopt_clean_environment (__environ);
#endif
-#ifdef SHARED
+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
__libc_global_ctors ();
#endif
}
diff --git a/sysdeps/sh/init-first.c b/sysdeps/sh/init-first.c
index d816625..1f3a821 100644
--- a/sysdeps/sh/init-first.c
+++ b/sysdeps/sh/init-first.c
@@ -59,7 +59,9 @@ _init (int argc, ...)
{
init (&argc);
+#ifndef NO_CTORS_DTORS_SECTIONS
__libc_global_ctors ();
+#endif
}
#endif
diff --git a/sysdeps/unix/sysv/linux/init-first.c b/sysdeps/unix/sysv/linux/init-first.c
index 7b2333d..a60212f 100644
--- a/sysdeps/unix/sysv/linux/init-first.c
+++ b/sysdeps/unix/sysv/linux/init-first.c
@@ -93,7 +93,7 @@ _init (int argc, char **argv, char **envp)
__getopt_clean_environment (envp);
#endif
-#ifdef SHARED
+#if defined SHARED && !defined NO_CTORS_DTORS_SECTIONS
__libc_global_ctors ();
#endif
}
--
1.7.3.4

View File

@@ -0,0 +1,35 @@
From e057a1b5930ec538c2b8abbba700a436ef2c81d5 Mon Sep 17 00:00:00 2001
From: Joseph Myers <joseph@codesourcery.com>
Date: Wed, 21 Sep 2011 13:27:50 -0700
Subject: [PATCH] Link libresolv.so with ld.so for __stack_chk_guard.
---
resolv/Makefile | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/resolv/Makefile b/resolv/Makefile
index ec3788f..b4287de 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -1,4 +1,5 @@
-# Copyright (C) 1994-2001,2003,2004,2007,2008 Free Software Foundation, Inc.
+# Copyright (C) 1994-2001,2003,2004,2007,2008,2011
+# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@@ -88,6 +89,11 @@ CFLAGS-res_hconf.c = -fexceptions
# This ensures they will load libc.so for needed symbols if loaded by
# a statically-linked program that hasn't already loaded it.
$(objpfx)libresolv.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a
+# Some hosts need '__stack_chk_guard', so pull in the definition from
+# ld.so if required.
+ifeq (yesyes,$(have-ssp)$(elf))
+LDLIBS-resolv.so += $(as-needed) $(elfobjdir)/ld.so $(no-as-needed)
+endif
# The DNS NSS modules needs the resolver.
$(objpfx)libnss_dns.so: $(objpfx)libresolv.so $(common-objpfx)libc.so \
--
1.7.3.4

View File

@@ -0,0 +1,97 @@
From 6e236b92765cdafb46d19e4907471699accc8269 Mon Sep 17 00:00:00 2001
From: Siddhesh Poyarekar <siddhesh@redhat.com>
Date: Thu, 26 Apr 2012 09:18:48 +0530
Subject: [PATCH] move libgcc_s soname definition to shlib-versions
diff --git a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c
index adce6e7..60dfbe6 100644
--- a/nptl/sysdeps/pthread/unwind-forcedunwind.c
+++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c
@@ -21,7 +21,7 @@
#include <unwind.h>
#include <pthreadP.h>
#include <sysdep.h>
-#include <libgcc_s.h>
+#include <gnu/lib-names.h>
static void *libgcc_s_handle;
static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl
index c4f3d6d..1b22086 100755
--- a/scripts/test-installation.pl
+++ b/scripts/test-installation.pl
@@ -105,9 +105,10 @@ while (<SOVERSIONS>) {
# - libnss1_* from glibc-compat add-on
# - libthread_db since it contains unresolved references
# - it's just a test NSS module
+ # - We don't provide the libgcc so we don't test it
if ($name ne "nss_ldap" && $name ne "db1"
&& !($name =~/^nss1_/) && $name ne "thread_db"
- && $name ne "nss_test1") {
+ && $name ne "nss_test1" && $name ne "libgcc_s") {
$link_libs .= " -l$name";
$versions{$name} = $version;
}
diff --git a/shlib-versions b/shlib-versions
index c530a44..840e08f 100644
--- a/shlib-versions
+++ b/shlib-versions
@@ -124,3 +124,7 @@ sparc64.*-.*-.* libBrokenLocale=1 GLIBC_2.2
# The asynchronous name lookup library.
.*-.*-.* libanl=1
+
+# This defines the libgcc soname version this glibc is to load for
+# asynchronous cancellation to work correctly.
+.*-.*-.* libgcc_s=1
diff --git a/sysdeps/generic/framestate.c b/sysdeps/generic/framestate.c
index 3638bbe..3bad5b5 100644
--- a/sysdeps/generic/framestate.c
+++ b/sysdeps/generic/framestate.c
@@ -1,5 +1,5 @@
/* __frame_state_for unwinder helper function wrapper.
- Copyright (C) 2001, 2003 Free Software Foundation, Inc.
+ Copyright (C) 2001-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2001.
@@ -23,7 +23,7 @@
#define __frame_state_for fallback_frame_state_for
#include <unwind-dw2.c>
#undef __frame_state_for
-#include <libgcc_s.h>
+#include <gnu/lib-names.h>
typedef struct frame_state * (*framesf)(void *pc, struct frame_state *);
struct frame_state *__frame_state_for (void *pc,
diff --git a/sysdeps/generic/libgcc_s.h b/sysdeps/generic/libgcc_s.h
deleted file mode 100644
index e74a103..0000000
--- a/sysdeps/generic/libgcc_s.h
+++ /dev/null
@@ -1,2 +0,0 @@
-/* Name of libgcc_s library provided by gcc. */
-#define LIBGCC_S_SO "libgcc_s.so.1"
diff --git a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c
index 1d3e33f..6afaebd 100644
--- a/sysdeps/gnu/unwind-resume.c
+++ b/sysdeps/gnu/unwind-resume.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>.
@@ -19,7 +19,7 @@
#include <dlfcn.h>
#include <stdio.h>
#include <unwind.h>
-#include <libgcc_s.h>
+#include <gnu/lib-names.h>
static void (*libgcc_s_resume) (struct _Unwind_Exception *exc);
static _Unwind_Reason_Code (*libgcc_s_personality)
--
1.7.3.4

Some files were not shown because too many files have changed in this diff Show More