do not bump gcc
This commit is contained in:
@@ -1,314 +0,0 @@
|
||||
# Copyright 1999-2005 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/files/awk/fixlafiles.awk,v 1.15 2008/02/19 05:47:29 vapier Exp $
|
||||
|
||||
#
|
||||
# Helper functions
|
||||
#
|
||||
function printn(string) {
|
||||
printf("%s", string)
|
||||
}
|
||||
function einfo(string) {
|
||||
printf(" \033[32;01m*\033[0m %s\n", string)
|
||||
}
|
||||
function einfon(string) {
|
||||
printf(" \033[32;01m*\033[0m %s", string)
|
||||
}
|
||||
function ewarn(string) {
|
||||
printf(" \033[33;01m*\033[0m %s\n", string)
|
||||
}
|
||||
function ewarnn(string) {
|
||||
printf(" \033[33;01m*\033[0m %s", string)
|
||||
}
|
||||
function eerror(string) {
|
||||
printf(" \033[31;01m*\033[0m %s\n", string)
|
||||
}
|
||||
|
||||
#
|
||||
# assert(condition, errmsg)
|
||||
# assert that a condition is true. Otherwise exit.
|
||||
#
|
||||
function assert(condition, string) {
|
||||
if (! condition) {
|
||||
printf("%s:%d: assertion failed: %s\n",
|
||||
FILENAME, FNR, string) > "/dev/stderr"
|
||||
_assert_exit = 1
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# system(command, return)
|
||||
# wrapper that normalizes return codes ...
|
||||
#
|
||||
function dosystem(command, ret) {
|
||||
ret = 0
|
||||
ret = system(command)
|
||||
if (ret == 0)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
#
|
||||
# Get our variables from environment
|
||||
#
|
||||
OLDVER = ENVIRON["OLDVER"]
|
||||
OLDCHOST = ENVIRON["OLDCHOST"]
|
||||
|
||||
if (OLDVER == "") {
|
||||
eerror("Could not get OLDVER!");
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Setup some sane defaults
|
||||
LIBCOUNT = 2
|
||||
HAVE_GCC34 = 0
|
||||
DIRLIST[1] = "/lib"
|
||||
DIRLIST[2] = "/usr/lib"
|
||||
|
||||
#
|
||||
# Walk /etc/ld.so.conf to discover all our library paths
|
||||
#
|
||||
pipe = "cat /etc/ld.so.conf | sort 2>/dev/null"
|
||||
while(((pipe) | getline ldsoconf_data) > 0) {
|
||||
if (ldsoconf_data !~ /^[[:space:]]*#/) {
|
||||
if (ldsoconf_data == "") continue
|
||||
|
||||
# Remove any trailing comments
|
||||
sub(/#.*$/, "", ldsoconf_data)
|
||||
# Remove any trailing spaces
|
||||
sub(/[[:space:]]+$/, "", ldsoconf_data)
|
||||
|
||||
# If there's more than one path per line, split
|
||||
# it up as if they were sep lines
|
||||
split(ldsoconf_data, nodes, /[:,[:space:]]/)
|
||||
|
||||
# Now add the rest from ld.so.conf
|
||||
for (x in nodes) {
|
||||
# wtf does this line do ?
|
||||
sub(/=.*/, "", nodes[x])
|
||||
# Prune trailing /
|
||||
sub(/\/$/, "", nodes[x])
|
||||
|
||||
if (nodes[x] == "") continue
|
||||
|
||||
#
|
||||
# Drop the directory if its a child directory of
|
||||
# one that was already added ...
|
||||
# For example, if we have:
|
||||
# /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
|
||||
# We really just want to save /usr/lib /usr/libexec
|
||||
#
|
||||
CHILD = 0
|
||||
for (y in DIRLIST) {
|
||||
if (nodes[x] ~ "^" DIRLIST[y] "(/|$)") {
|
||||
CHILD = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (CHILD) continue
|
||||
|
||||
DIRLIST[++LIBCOUNT] = nodes[x]
|
||||
}
|
||||
}
|
||||
}
|
||||
close(pipe)
|
||||
|
||||
#
|
||||
# Get line from gcc's output containing CHOST
|
||||
#
|
||||
pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
|
||||
if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
|
||||
close(pipe)
|
||||
|
||||
# If we fail to get the CHOST, see if we can get the CHOST
|
||||
# portage thinks we are using ...
|
||||
pipe = "/usr/bin/portageq envvar 'CHOST'"
|
||||
assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
|
||||
} else {
|
||||
# Check pre gcc-3.4.x versions
|
||||
CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST)
|
||||
|
||||
if (CHOST == TMP_CHOST || CHOST == "") {
|
||||
# Check gcc-3.4.x or later
|
||||
CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST);
|
||||
|
||||
if (CHOST == TMP_CHOST || CHOST == "")
|
||||
CHOST = ""
|
||||
else
|
||||
HAVE_GCC34 = 1
|
||||
}
|
||||
}
|
||||
close(pipe)
|
||||
|
||||
if (CHOST == "") {
|
||||
eerror("Could not get gcc's CHOST!")
|
||||
exit 1
|
||||
}
|
||||
|
||||
if (OLDCHOST != "")
|
||||
if (OLDCHOST == CHOST)
|
||||
OLDCHOST = ""
|
||||
|
||||
GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
|
||||
GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
|
||||
|
||||
if (HAVE_GCC34)
|
||||
GCCLIBPREFIX = GCCLIBPREFIX_NEW
|
||||
else
|
||||
GCCLIBPREFIX = GCCLIBPREFIX_OLD
|
||||
|
||||
GCCLIB = GCCLIBPREFIX CHOST
|
||||
|
||||
if (OLDCHOST != "") {
|
||||
OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
|
||||
OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
|
||||
}
|
||||
|
||||
# Get current gcc's version
|
||||
pipe = "gcc -dumpversion"
|
||||
assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
|
||||
close(pipe)
|
||||
|
||||
if (NEWVER == "") {
|
||||
eerror("Could not get gcc's version!")
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Nothing to do ?
|
||||
if ((OLDVER == NEWVER) && (OLDCHOST == ""))
|
||||
exit 0
|
||||
|
||||
#
|
||||
# Ok, now let's scan for the .la files and actually fix them up
|
||||
#
|
||||
for (x = 1; x <= LIBCOUNT; x++) {
|
||||
# Do nothing if the target dir is gcc's internal library path
|
||||
if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
|
||||
DIRLIST[x] ~ GCCLIBPREFIX_NEW)
|
||||
continue
|
||||
|
||||
einfo(" [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
|
||||
|
||||
pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
|
||||
while (((pipe) | getline la_files) > 0) {
|
||||
|
||||
# Do nothing if the .la file is located in gcc's internal lib path
|
||||
if (la_files ~ GCCLIBPREFIX_OLD ||
|
||||
la_files ~ GCCLIBPREFIX_NEW)
|
||||
continue
|
||||
|
||||
CHANGED = 0
|
||||
CHOST_CHANGED = 0
|
||||
|
||||
# See if we need to fix the .la file
|
||||
while ((getline la_data < (la_files)) > 0) {
|
||||
if (OLDCHOST != "") {
|
||||
if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
|
||||
GCCLIB, la_data) > 0) ||
|
||||
(gsub(OLDGCCLIB2 "[/[:space:]]+",
|
||||
GCCLIB, la_data) > 0)) {
|
||||
CHANGED = 1
|
||||
CHOST_CHANGED = 1
|
||||
}
|
||||
}
|
||||
if (OLDVER != NEWVER) {
|
||||
if ((gsub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "[/[:space:]]*",
|
||||
GCCLIB "/" NEWVER, la_data) > 0) ||
|
||||
(gsub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "[/[:space:]]*",
|
||||
GCCLIB "/" NEWVER, la_data) > 0))
|
||||
CHANGED = 1
|
||||
}
|
||||
}
|
||||
close(la_files)
|
||||
|
||||
# Do the actual changes in a second loop, as we can then
|
||||
# verify that CHOST_CHANGED among things is correct ...
|
||||
if (CHANGED) {
|
||||
ewarnn(" FIXING: " la_files " ...")
|
||||
|
||||
if (CHANGED)
|
||||
printn("[")
|
||||
|
||||
# Clear the temp file (removing rather than '>foo' is better
|
||||
# out of a security point of view?)
|
||||
dosystem("rm -f " la_files ".new")
|
||||
|
||||
while ((getline la_data < (la_files)) > 0) {
|
||||
if (OLDCHOST != "") {
|
||||
tmpstr = gensub(OLDGCCLIB1 "([/[:space:]]+)",
|
||||
GCCLIB "\\1", "g", la_data)
|
||||
tmpstr = gensub(OLDGCCLIB2 "([/[:space:]]+)",
|
||||
GCCLIB "\\1", "g", tmpstr)
|
||||
|
||||
if (la_data != tmpstr) {
|
||||
printn("c")
|
||||
la_data = tmpstr
|
||||
}
|
||||
|
||||
if (CHOST_CHANGED > 0) {
|
||||
# We try to be careful about CHOST changes outside
|
||||
# the gcc library path (meaning we cannot match it
|
||||
# via /GCCLIBPREFIX CHOST/) ...
|
||||
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/CHOST/{bin,lib}'
|
||||
#
|
||||
gsub("-L/usr/" OLDCHOST "/",
|
||||
"-L/usr/" CHOST "/", la_data)
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
|
||||
#
|
||||
la_data = gensub("(" GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
|
||||
"\\1/" CHOST "/", "g", la_data)
|
||||
}
|
||||
}
|
||||
|
||||
if (OLDVER != NEWVER) {
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc/CHOST/VER'
|
||||
#
|
||||
tmpstr = gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
|
||||
GCCLIB "/" NEWVER "\\1", "g", la_data)
|
||||
tmpstr = gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
|
||||
GCCLIB "/" NEWVER "\\1", "g", tmpstr)
|
||||
|
||||
if (la_data != tmpstr) {
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc-lib/../../CHOST/lib'
|
||||
#
|
||||
# in cases where we have gcc34
|
||||
tmpstr = gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
|
||||
GCCLIBPREFIX "\\1", "g", tmpstr)
|
||||
tmpstr = gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
|
||||
GCCLIBPREFIX "\\1", "g", tmpstr)
|
||||
printn("v")
|
||||
la_data = tmpstr
|
||||
}
|
||||
}
|
||||
|
||||
print la_data >> (la_files ".new")
|
||||
}
|
||||
|
||||
if (CHANGED)
|
||||
print "]"
|
||||
|
||||
close(la_files)
|
||||
close(la_files ".new")
|
||||
|
||||
assert(dosystem("mv -f " la_files ".new " la_files),
|
||||
"dosystem(\"mv -f " la_files ".new " la_files "\")")
|
||||
}
|
||||
}
|
||||
|
||||
close(pipe)
|
||||
}
|
||||
}
|
||||
|
||||
# vim:ts=4
|
||||
@@ -1,335 +0,0 @@
|
||||
# Copyright 1999-2005 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/files/awk/fixlafiles.awk-no_gcc_la,v 1.4 2010/03/19 23:53:07 vapier Exp $
|
||||
|
||||
#
|
||||
# Helper functions
|
||||
#
|
||||
function printn(string) {
|
||||
printf("%s", string)
|
||||
}
|
||||
function einfo(string) {
|
||||
printf(" \033[32;01m*\033[0m %s\n", string)
|
||||
}
|
||||
function einfon(string) {
|
||||
printf(" \033[32;01m*\033[0m %s", string)
|
||||
}
|
||||
function ewarn(string) {
|
||||
printf(" \033[33;01m*\033[0m %s\n", string)
|
||||
}
|
||||
function ewarnn(string) {
|
||||
printf(" \033[33;01m*\033[0m %s", string)
|
||||
}
|
||||
function eerror(string) {
|
||||
printf(" \033[31;01m*\033[0m %s\n", string)
|
||||
}
|
||||
|
||||
#
|
||||
# assert(condition, errmsg)
|
||||
# assert that a condition is true. Otherwise exit.
|
||||
#
|
||||
function assert(condition, string) {
|
||||
if (! condition) {
|
||||
printf("%s:%d: assertion failed: %s\n",
|
||||
FILENAME, FNR, string) > "/dev/stderr"
|
||||
_assert_exit = 1
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# system(command, return)
|
||||
# wrapper that normalizes return codes ...
|
||||
#
|
||||
function dosystem(command, ret) {
|
||||
ret = 0
|
||||
ret = system(command)
|
||||
if (ret == 0)
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# parse_ld_conf(config_file)
|
||||
#
|
||||
function parse_ld_conf(conf, pipe, ldsoconf_data, CHILD, y) {
|
||||
pipe = "cd /etc; cat " conf " | sort 2>/dev/null"
|
||||
while(((pipe) | getline ldsoconf_data) > 0) {
|
||||
if (ldsoconf_data ~ /^[[:space:]]*#/)
|
||||
continue
|
||||
if (ldsoconf_data == "")
|
||||
continue
|
||||
|
||||
# Handle the "include" keyword
|
||||
if (ldsoconf_data ~ /^include /) {
|
||||
sub(/^include /, "", ldsoconf_data)
|
||||
parse_ld_conf(ldsoconf_data)
|
||||
continue
|
||||
}
|
||||
|
||||
# Remove any trailing comments
|
||||
sub(/#.*$/, "", ldsoconf_data)
|
||||
# Remove any trailing spaces
|
||||
sub(/[[:space:]]+$/, "", ldsoconf_data)
|
||||
# Eat duplicate slashes
|
||||
sub(/\/\//, "/", ldsoconf_data)
|
||||
# Prune trailing /
|
||||
sub(/\/$/, "", ldsoconf_data)
|
||||
|
||||
#
|
||||
# Drop the directory if its a child directory of
|
||||
# one that was already added ...
|
||||
# For example, if we have:
|
||||
# /usr/lib /usr/libexec /usr/lib/mozilla /usr/lib/nss
|
||||
# We really just want to save /usr/lib /usr/libexec
|
||||
#
|
||||
CHILD = 0
|
||||
for (y in DIRLIST) {
|
||||
if (ldsoconf_data ~ "^" DIRLIST[y] "(/|$)") {
|
||||
CHILD = 1
|
||||
break
|
||||
}
|
||||
}
|
||||
if (CHILD) continue
|
||||
|
||||
DIRLIST[++LIBCOUNT] = ldsoconf_data
|
||||
}
|
||||
close(pipe)
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
#
|
||||
# Get our variables from environment
|
||||
#
|
||||
OLDVER = ENVIRON["OLDVER"]
|
||||
OLDCHOST = ENVIRON["OLDCHOST"]
|
||||
|
||||
if (OLDVER == "") {
|
||||
eerror("Could not get OLDVER!");
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Setup some sane defaults
|
||||
LIBCOUNT = 2
|
||||
HAVE_GCC34 = 0
|
||||
DIRLIST[1] = "/lib"
|
||||
DIRLIST[2] = "/usr/lib"
|
||||
|
||||
#
|
||||
# Walk /etc/ld.so.conf to discover all our library paths
|
||||
#
|
||||
parse_ld_conf("/etc/ld.so.conf")
|
||||
|
||||
#
|
||||
# Get line from gcc's output containing CHOST
|
||||
#
|
||||
pipe = "gcc -print-file-name=libgcc.a 2>/dev/null"
|
||||
if ((!((pipe) | getline TMP_CHOST)) || (TMP_CHOST == "")) {
|
||||
close(pipe)
|
||||
|
||||
# If we fail to get the CHOST, see if we can get the CHOST
|
||||
# portage thinks we are using ...
|
||||
pipe = "/usr/bin/portageq envvar 'CHOST'"
|
||||
assert(((pipe) | getline CHOST), "(" pipe ") | getline CHOST")
|
||||
} else {
|
||||
# Check pre gcc-3.4.x versions
|
||||
CHOST = gensub("^.+lib/gcc-lib/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST)
|
||||
|
||||
if (CHOST == TMP_CHOST || CHOST == "") {
|
||||
# Check gcc-3.4.x or later
|
||||
CHOST = gensub("^.+lib/gcc/([^/]+)/[0-9]+.+$", "\\1", 1, TMP_CHOST);
|
||||
|
||||
if (CHOST == TMP_CHOST || CHOST == "")
|
||||
CHOST = ""
|
||||
else
|
||||
HAVE_GCC34 = 1
|
||||
}
|
||||
}
|
||||
close(pipe)
|
||||
|
||||
if (CHOST == "") {
|
||||
eerror("Could not get gcc's CHOST!")
|
||||
exit 1
|
||||
}
|
||||
|
||||
if (OLDCHOST != "")
|
||||
if (OLDCHOST == CHOST)
|
||||
OLDCHOST = ""
|
||||
|
||||
GCCLIBPREFIX_OLD = "/usr/lib/gcc-lib/"
|
||||
GCCLIBPREFIX_NEW = "/usr/lib/gcc/"
|
||||
|
||||
if (HAVE_GCC34)
|
||||
GCCLIBPREFIX = GCCLIBPREFIX_NEW
|
||||
else
|
||||
GCCLIBPREFIX = GCCLIBPREFIX_OLD
|
||||
|
||||
GCCLIB = GCCLIBPREFIX CHOST
|
||||
|
||||
if (OLDCHOST != "") {
|
||||
OLDGCCLIB1 = GCCLIBPREFIX_OLD OLDCHOST
|
||||
OLDGCCLIB2 = GCCLIBPREFIX_NEW OLDCHOST
|
||||
}
|
||||
|
||||
# Get current gcc's version
|
||||
pipe = "gcc -dumpversion"
|
||||
assert(((pipe) | getline NEWVER), "(" pipe ") | getline NEWVER)")
|
||||
close(pipe)
|
||||
|
||||
if (NEWVER == "") {
|
||||
eerror("Could not get gcc's version!")
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Nothing to do ?
|
||||
# NB: Do not check for (OLDVER == NEWVER) anymore, as we might need to
|
||||
# replace libstdc++.la ....
|
||||
if ((OLDVER == "") && (OLDCHOST == ""))
|
||||
exit 0
|
||||
|
||||
#
|
||||
# Ok, now let's scan for the .la files and actually fix them up
|
||||
#
|
||||
for (x = 1; x <= LIBCOUNT; x++) {
|
||||
# Do nothing if the target dir is gcc's internal library path
|
||||
if (DIRLIST[x] ~ GCCLIBPREFIX_OLD ||
|
||||
DIRLIST[x] ~ GCCLIBPREFIX_NEW)
|
||||
continue
|
||||
|
||||
einfo(" [" x "/" LIBCOUNT "] Scanning " DIRLIST[x] " ...")
|
||||
|
||||
pipe = "find " DIRLIST[x] "/ -name '*.la' 2>/dev/null"
|
||||
while (((pipe) | getline la_files) > 0) {
|
||||
|
||||
# Do nothing if the .la file is located in gcc's internal lib path
|
||||
if (la_files ~ GCCLIBPREFIX_OLD ||
|
||||
la_files ~ GCCLIBPREFIX_NEW)
|
||||
continue
|
||||
|
||||
CHANGED = 0
|
||||
CHOST_CHANGED = 0
|
||||
|
||||
# See if we need to fix the .la file
|
||||
while ((getline la_data < (la_files)) > 0) {
|
||||
if (OLDCHOST != "") {
|
||||
if ((gsub(OLDGCCLIB1 "[/[:space:]]+",
|
||||
GCCLIB, la_data) > 0) ||
|
||||
(gsub(OLDGCCLIB2 "[/[:space:]]+",
|
||||
GCCLIB, la_data) > 0)) {
|
||||
CHANGED = 1
|
||||
CHOST_CHANGED = 1
|
||||
}
|
||||
}
|
||||
if (OLDVER != NEWVER) {
|
||||
if ((gsub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "[/[:space:]]*",
|
||||
GCCLIB "/" NEWVER, la_data) > 0) ||
|
||||
(gsub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "[/[:space:]]*",
|
||||
GCCLIB "/" NEWVER, la_data) > 0))
|
||||
CHANGED = 1
|
||||
}
|
||||
# We now check if we have libstdc++.la, as we remove the
|
||||
# libtool linker scripts for gcc ...
|
||||
# We do this last, as we only match the new paths
|
||||
if (gsub(GCCLIB "/" NEWVER "/libstdc\\+\\+\\.la",
|
||||
"-lstdc++", la_data) > 0)
|
||||
CHANGED = 1
|
||||
}
|
||||
close(la_files)
|
||||
|
||||
# Do the actual changes in a second loop, as we can then
|
||||
# verify that CHOST_CHANGED among things is correct ...
|
||||
if (CHANGED) {
|
||||
ewarnn(" FIXING: " la_files " ...[")
|
||||
|
||||
# Clear the temp file (removing rather than '>foo' is better
|
||||
# out of a security point of view?)
|
||||
dosystem("rm -f " la_files ".new")
|
||||
|
||||
while ((getline la_data < (la_files)) > 0) {
|
||||
if (OLDCHOST != "") {
|
||||
tmpstr = gensub(OLDGCCLIB1 "([/[:space:]]+)",
|
||||
GCCLIB "\\1", "g", la_data)
|
||||
tmpstr = gensub(OLDGCCLIB2 "([/[:space:]]+)",
|
||||
GCCLIB "\\1", "g", tmpstr)
|
||||
|
||||
if (la_data != tmpstr) {
|
||||
printn("c")
|
||||
la_data = tmpstr
|
||||
}
|
||||
|
||||
if (CHOST_CHANGED > 0) {
|
||||
# We try to be careful about CHOST changes outside
|
||||
# the gcc library path (meaning we cannot match it
|
||||
# via /GCCLIBPREFIX CHOST/) ...
|
||||
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/CHOST/{bin,lib}'
|
||||
#
|
||||
gsub("-L/usr/" OLDCHOST "/",
|
||||
"-L/usr/" CHOST "/", la_data)
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc-lib/CHOST/VER/../../../../CHOST/lib'
|
||||
#
|
||||
la_data = gensub("(" GCCLIB "/[^[:space:]]+)/" OLDCHOST "/",
|
||||
"\\1/" CHOST "/", "g", la_data)
|
||||
}
|
||||
}
|
||||
|
||||
if (OLDVER != NEWVER) {
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc/CHOST/VER'
|
||||
#
|
||||
tmpstr = gensub(GCCLIBPREFIX_OLD CHOST "/" OLDVER "([/[:space:]]+)",
|
||||
GCCLIB "/" NEWVER "\\1", "g", la_data)
|
||||
tmpstr = gensub(GCCLIBPREFIX_NEW CHOST "/" OLDVER "([/[:space:]]+)",
|
||||
GCCLIB "/" NEWVER "\\1", "g", tmpstr)
|
||||
|
||||
if (la_data != tmpstr) {
|
||||
# Catch:
|
||||
#
|
||||
# dependency_libs=' -L/usr/lib/gcc-lib/../../CHOST/lib'
|
||||
#
|
||||
# in cases where we have gcc34
|
||||
tmpstr = gensub(GCCLIBPREFIX_OLD "(../../" CHOST "/lib)",
|
||||
GCCLIBPREFIX "\\1", "g", tmpstr)
|
||||
tmpstr = gensub(GCCLIBPREFIX_NEW "(../../" CHOST "/lib)",
|
||||
GCCLIBPREFIX "\\1", "g", tmpstr)
|
||||
printn("v")
|
||||
la_data = tmpstr
|
||||
}
|
||||
}
|
||||
|
||||
# We now check if we have libstdc++.la, as we remove the
|
||||
# libtool linker scripts for gcc and any referencese in any
|
||||
# libtool linker scripts.
|
||||
# We do this last, as we only match the new paths
|
||||
tmpstr = gensub(GCCLIB "/" NEWVER "/libstdc\\+\\+\\.la",
|
||||
"-lstdc++", "g", la_data);
|
||||
if (la_data != tmpstr) {
|
||||
printn("l")
|
||||
la_data = tmpstr
|
||||
}
|
||||
|
||||
print la_data >> (la_files ".new")
|
||||
}
|
||||
|
||||
if (CHANGED)
|
||||
print "]"
|
||||
|
||||
close(la_files)
|
||||
close(la_files ".new")
|
||||
|
||||
assert(dosystem("mv -f " la_files ".new " la_files),
|
||||
"dosystem(\"mv -f " la_files ".new " la_files "\")")
|
||||
}
|
||||
}
|
||||
|
||||
close(pipe)
|
||||
}
|
||||
}
|
||||
|
||||
# vim:ts=4
|
||||
@@ -1,20 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Call the appropriate C compiler with options to accept ANSI/ISO C
|
||||
# The following options are the same (as of gcc-2.95):
|
||||
# -ansi
|
||||
# -std=c89
|
||||
# -std=iso9899:1990
|
||||
|
||||
for i; do
|
||||
case "$i" in
|
||||
-ansi|-std=c89|-std=iso9899:1990)
|
||||
;;
|
||||
-std=*)
|
||||
echo >&2 "`basename $0` called with non ANSI/ISO C90 option $i"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exec gcc -std=c89 -pedantic -U_FORTIFY_SOURCE "$@"
|
||||
@@ -1,21 +0,0 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Call the appropriate C compiler with options to accept ANSI/ISO C
|
||||
# The following options are the same (as of gcc-3.3):
|
||||
# -std=c99
|
||||
# -std=c9x
|
||||
# -std=iso9899:1999
|
||||
# -std=iso9899:199x
|
||||
|
||||
for i; do
|
||||
case "$i" in
|
||||
-std=c9[9x]|-std=iso9899:199[9x])
|
||||
;;
|
||||
-ansi|-std=*)
|
||||
echo >&2 "`basename $0` called with non ANSI/ISO C99 option $i"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
exec gcc -std=c99 -pedantic -U_FORTIFY_SOURCE ${1+"$@"}
|
||||
@@ -1,72 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Copyright 1999-2007 Gentoo Foundation
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/files/fix_libtool_files.sh,v 1.14 2007/09/06 11:00:44 uberlord Exp $
|
||||
|
||||
usage() {
|
||||
cat << "USAGE_END"
|
||||
Usage: fix_libtool_files.sh <old-gcc-version> [--oldarch <old-CHOST>]
|
||||
|
||||
Where <old-gcc-version> is the version number of the
|
||||
previous gcc version. For example, if you updated to
|
||||
gcc-3.2.1, and you had gcc-3.2 installed, run:
|
||||
|
||||
# fix_libtool_files.sh 3.2
|
||||
|
||||
If you updated to gcc-3.2.3, and the old CHOST was i586-pc-linux-gnu
|
||||
but you now have CHOST as i686-pc-linux-gnu, run:
|
||||
|
||||
# fix_libtool_files.sh 3.2 --oldarch i586-pc-linux-gnu
|
||||
|
||||
Note that if only the CHOST and not the version changed, you can run
|
||||
it with the current version and the '--oldarch <old-CHOST>' arguments,
|
||||
and it will do the expected:
|
||||
|
||||
# fix_libtool_files.sh `gcc -dumpversion` --oldarch i586-pc-linux-gnu
|
||||
|
||||
USAGE_END
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [[ $2 != "--oldarch" && $# -ne 1 ]] || \
|
||||
[[ $2 == "--oldarch" && $# -ne 3 ]]
|
||||
then
|
||||
usage
|
||||
fi
|
||||
|
||||
ARGV1=$1
|
||||
ARGV2=$2
|
||||
ARGV3=$3
|
||||
|
||||
source /etc/profile || exit 1
|
||||
source /etc/init.d/functions.sh || exit 1
|
||||
|
||||
if [[ ${EUID} -ne 0 ]] ; then
|
||||
eerror "${0##*/}: Must be root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# make sure the files come out sane
|
||||
umask 0022
|
||||
|
||||
if [[ ${ARGV2} == "--oldarch" ]] && [[ -n ${ARGV3} ]] ; then
|
||||
OLDCHOST=${ARGV3}
|
||||
else
|
||||
OLDCHOST=
|
||||
fi
|
||||
|
||||
AWKDIR="/lib/rcscripts/awk"
|
||||
|
||||
if [[ ! -r ${AWKDIR}/fixlafiles.awk ]] ; then
|
||||
eerror "${0##*/}: ${AWKDIR}/fixlafiles.awk does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
OLDVER=${ARGV1}
|
||||
|
||||
export OLDVER OLDCHOST
|
||||
|
||||
einfo "Scanning libtool files for hardcoded gcc library paths..."
|
||||
gawk -f "${AWKDIR}/fixlafiles.awk"
|
||||
|
||||
# vim:ts=4
|
||||
@@ -1,24 +0,0 @@
|
||||
--- a/gcc/config/arm/arm.md
|
||||
+++ b/gcc/config/arm/arm.md
|
||||
@@ -4202,7 +4202,9 @@
|
||||
#
|
||||
ldr%(h%)\\t%0, %1"
|
||||
[(set_attr "type" "alu_shift,load_byte")
|
||||
- (set_attr "predicable" "yes")]
|
||||
+ (set_attr "predicable" "yes")
|
||||
+ (set_attr "pool_range" "*,256")
|
||||
+ (set_attr "neg_pool_range" "*,244")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendhisi2_v6"
|
||||
@@ -4213,7 +4215,9 @@
|
||||
uxth%?\\t%0, %1
|
||||
ldr%(h%)\\t%0, %1"
|
||||
[(set_attr "type" "alu_shift,load_byte")
|
||||
- (set_attr "predicable" "yes")]
|
||||
+ (set_attr "predicable" "yes")
|
||||
+ (set_attr "pool_range" "*,256")
|
||||
+ (set_attr "neg_pool_range" "*,244")]
|
||||
)
|
||||
|
||||
(define_insn "*arm_zero_extendhisi2addsi"
|
||||
@@ -1,64 +0,0 @@
|
||||
The LANG vars aren't reset early enough so when sed tries to use [a-zA-Z] in
|
||||
option parsing, it may break.
|
||||
|
||||
http://bugs.gentoo.org/103483
|
||||
|
||||
--- configure
|
||||
+++ configure
|
||||
@@ -54,6 +54,19 @@
|
||||
infodir='${prefix}/info'
|
||||
mandir='${prefix}/man'
|
||||
|
||||
+# NLS nuisances.
|
||||
+for as_var in \
|
||||
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
|
||||
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
|
||||
+ LC_TELEPHONE LC_TIME
|
||||
+do
|
||||
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
|
||||
+ eval $as_var=C; export $as_var
|
||||
+ else
|
||||
+ unset $as_var
|
||||
+ fi
|
||||
+done
|
||||
+
|
||||
# Initialize some other variables.
|
||||
subdirs=
|
||||
MFLAGS= MAKEFLAGS=
|
||||
@@ -452,16 +463,6 @@
|
||||
esac
|
||||
done
|
||||
|
||||
-# NLS nuisances.
|
||||
-# Only set these to C if already set. These must not be set unconditionally
|
||||
-# because not all systems understand e.g. LANG=C (notably SCO).
|
||||
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
|
||||
-# Non-C LC_CTYPE values break the ctype check.
|
||||
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
|
||||
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
|
||||
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
|
||||
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
|
||||
-
|
||||
# confdefs.h avoids OS command line length limits that DEFS can exceed.
|
||||
rm -rf conftest* confdefs.h
|
||||
# AIX cpp loses on an empty file, so make sure it contains at least a newline.
|
||||
@@ -1850,6 +1850,19 @@
|
||||
# Compiler output produced by configure, useful for debugging
|
||||
# configure, is in ./config.log if it exists.
|
||||
|
||||
+# NLS nuisances.
|
||||
+for as_var in \
|
||||
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
|
||||
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
|
||||
+ LC_TELEPHONE LC_TIME
|
||||
+do
|
||||
+ if (set +x; test -z "`(eval \$as_var=C; export \$as_var) 2>&1`"); then
|
||||
+ eval \$as_var=C; export \$as_var
|
||||
+ else
|
||||
+ unset \$as_var
|
||||
+ fi
|
||||
+done
|
||||
+
|
||||
ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
|
||||
for ac_option
|
||||
do
|
||||
@@ -1,16 +0,0 @@
|
||||
Chances are quite good that the installed makeinfo is sufficient.
|
||||
So ignore false positives where the makeinfo installed is so new
|
||||
that it violates the cheesy version grep.
|
||||
|
||||
http://bugs.gentoo.org/198182
|
||||
|
||||
--- configure
|
||||
+++ configure
|
||||
@@ -3573,6 +3573,6 @@
|
||||
:
|
||||
else
|
||||
- MAKEINFO="$MISSING makeinfo"
|
||||
+ :
|
||||
fi
|
||||
;;
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
Add support for external spec file via the GCC_SPECS env var. This
|
||||
allows us to easily control pie/ssp defaults with gcc-config profiles.
|
||||
|
||||
Original patch by Rob Holland
|
||||
Extended to support multiple entries separated by ':' by Kevin F. Quinn
|
||||
Modified to use getenv instead of poisoned GET_ENVIRONMENT by Ryan Hill
|
||||
|
||||
--- gcc-4/gcc/gcc.c
|
||||
+++ gcc-4/gcc/gcc.c
|
||||
@@ -6482,6 +6482,32 @@
|
||||
|
||||
/* Process any user specified specs in the order given on the command
|
||||
line. */
|
||||
+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS) || defined (WIN32))
|
||||
+ /* Add specs listed in GCC_SPECS. Note; in the process of separating
|
||||
+ * each spec listed, the string is overwritten at token boundaries
|
||||
+ * (':') with '\0', an effect of strtok_r().
|
||||
+ */
|
||||
+ specs_file = getenv ("GCC_SPECS");
|
||||
+ if (specs_file && (strlen(specs_file) > 0))
|
||||
+ {
|
||||
+ char *spec, *saveptr;
|
||||
+ for (spec=strtok_r(specs_file,":",&saveptr);
|
||||
+ spec!=NULL;
|
||||
+ spec=strtok_r(NULL,":",&saveptr))
|
||||
+ {
|
||||
+ struct user_specs *user = (struct user_specs *)
|
||||
+ xmalloc (sizeof (struct user_specs));
|
||||
+
|
||||
+ user->next = (struct user_specs *) 0;
|
||||
+ user->filename = spec;
|
||||
+ if (user_specs_tail)
|
||||
+ user_specs_tail->next = user;
|
||||
+ else
|
||||
+ user_specs_head = user;
|
||||
+ user_specs_tail = user;
|
||||
+ }
|
||||
+ }
|
||||
+#endif
|
||||
for (uptr = user_specs_head; uptr; uptr = uptr->next)
|
||||
{
|
||||
char *filename = find_a_file (&startfile_prefixes, uptr->filename,
|
||||
@@ -1,233 +0,0 @@
|
||||
#!/bin/bash
|
||||
# $Id: mkinfodir,v 1.1 2001/09/01 07:56:19 drobbins Exp $
|
||||
# Generate the top-level Info node, given a directory of Info files
|
||||
# and (optionally) a skeleton file. The output will be suitable for a
|
||||
# top-level dir file. The skeleton file contains info topic names in the
|
||||
# order they should appear in the output. There are three special
|
||||
# lines that alter the behavior: a line consisting of just "--" causes
|
||||
# the next line to be echoed verbatim to the output. A line
|
||||
# containing just "%%" causes all the remaining filenames (wildcards
|
||||
# allowed) in the rest of the file to be ignored. A line containing
|
||||
# just "!!" exits the script when reached (unless preceded by a line
|
||||
# containing just "--"). Once the script reaches the end of the
|
||||
# skeleton file, it goes through the remaining files in the directory
|
||||
# in order, putting their entries at the end. The script will use the
|
||||
# ENTRY information in each info file if it exists. Otherwise it will
|
||||
# make a minimal entry.
|
||||
|
||||
# sent by Jeffrey Osier <jeffrey@cygnus.com>, who thinks it came from
|
||||
# zoo@winternet.com (david d `zoo' zuhn)
|
||||
|
||||
# modified 7 April 1995 by Joe Harrington <jh@tecate.gsfc.nasa.gov> to
|
||||
# take special flags
|
||||
|
||||
INFODIR=$1
|
||||
if [ $# = 2 ] ; then
|
||||
SKELETON=$2
|
||||
else
|
||||
SKELETON=/dev/null
|
||||
fi
|
||||
|
||||
skip=
|
||||
|
||||
if [ $# -gt 2 ] ; then
|
||||
echo usage: $0 info-directory [ skeleton-file ] 1>&2
|
||||
exit 1
|
||||
elif [ -z "${INFODIR}" ] ; then
|
||||
INFODIR="%%DEFAULT_INFO_DIR%%"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ ! -d ${INFODIR} ] ; then
|
||||
echo "$0: first argument must specify a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
### output the dir header
|
||||
echo "-*- Text -*-"
|
||||
echo "This file was generated automatically by $0."
|
||||
echo "This version was generated on `date`"
|
||||
echo "by `whoami`@`hostname` for `(cd ${INFODIR}; pwd)`"
|
||||
|
||||
cat << moobler
|
||||
\$Id: mkinfodir,v 1.1 2001/09/01 07:56:19 drobbins Exp $
|
||||
This is the file .../info/dir, which contains the topmost node of the
|
||||
Info hierarchy. The first time you invoke Info you start off
|
||||
looking at that node, which is (dir)Top.
|
||||
|
||||
File: dir Node: Top This is the top of the INFO tree
|
||||
|
||||
This (the Directory node) gives a menu of major topics.
|
||||
Typing "q" exits, "?" lists all Info commands, "d" returns here,
|
||||
"h" gives a primer for first-timers,
|
||||
"mEmacs<Return>" visits the Emacs topic, etc.
|
||||
|
||||
In Emacs, you can click mouse button 2 on a menu item or cross reference
|
||||
to select it.
|
||||
|
||||
* Menu: The list of major topics begins on the next line.
|
||||
|
||||
moobler
|
||||
|
||||
### go through the list of files in the skeleton. If an info file
|
||||
### exists, grab the ENTRY information from it. If an entry exists
|
||||
### use it, otherwise create a minimal dir entry.
|
||||
###
|
||||
### Then remove that file from the list of existing files. If any
|
||||
### additional files remain (ones that don't have a skeleton entry),
|
||||
### then generate entries for those in the same way, putting the info for
|
||||
### those at the end....
|
||||
|
||||
infofiles=`(cd ${INFODIR}; /bin/ls | grep -v '\-[0-9]*\.gz$' | grep -v '\-[0-9]*$' | egrep -v '^dir$|^dir\.info$|^dir\.orig$')`
|
||||
|
||||
# echoing gets clobbered by backquotes; we do it the hard way...
|
||||
lines=`wc $SKELETON | awk '{print $1}'`
|
||||
line=1
|
||||
while [ $lines -ge $line ] ; do
|
||||
# Read one line from the file. This is so that we can echo lines with
|
||||
# whitespace and quoted characters in them.
|
||||
fileline=`awk NR==$line $SKELETON`
|
||||
|
||||
# flag fancy features
|
||||
if [ ! -z "$echoline" ] ; then # echo line
|
||||
echo "$fileline"
|
||||
fileline=
|
||||
echoline=
|
||||
elif [ "${fileline}" = "--" ] ; then # should we echo the next line?
|
||||
echoline=1
|
||||
elif [ "${fileline}" = "%%" ] ; then # eliminate remaining files from dir?
|
||||
skip=1
|
||||
elif [ "${fileline}" = "!!" ] ; then # quit now
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# handle files if they exist
|
||||
for file in $fileline"" ; do # expand wildcards ("" handles blank lines)
|
||||
|
||||
fname=
|
||||
|
||||
if [ -z "$echoline" -a ! -z "$file" ] ; then
|
||||
|
||||
# Find the file to operate upon. Check both possible names.
|
||||
infoname=`echo $file | sed 's/\.gz$//'`
|
||||
infoname=`echo $infoname | sed 's/\.info$//'`
|
||||
noext=
|
||||
ext=
|
||||
if [ -f ${INFODIR}/$infoname ] ; then
|
||||
noext=$infoname
|
||||
fi
|
||||
if [ -f ${INFODIR}/${infoname}.info ] ; then
|
||||
ext=${infoname}.info
|
||||
fi
|
||||
if [ -f ${INFODIR}/${infoname}.info.gz ] ; then
|
||||
ext=${infoname}.info.gz
|
||||
fi
|
||||
# If it exists with both names take what was said in the file.
|
||||
if [ ! -z "$ext" -a ! -z "$noext" ]; then
|
||||
fname=$file
|
||||
warn="### Warning: $ext and $noext both exist! Using ${file}. ###"
|
||||
elif [ ! \( -z "$ext" -a -z "$noext" \) ]; then
|
||||
# just take the name if it exists only once
|
||||
fname=${noext}${ext}
|
||||
fi
|
||||
|
||||
# if we found something and aren't skipping, do the entry
|
||||
if [ ! -z "$fname" ] ; then
|
||||
if [ -z "$skip" ] ; then
|
||||
|
||||
if [ ! -z "$warn" ] ; then # issue any warning
|
||||
echo $warn
|
||||
warn=
|
||||
fi
|
||||
if [ "${fname##*.}" = "gz" ] ; then
|
||||
entry=`zcat ${INFODIR}/${fname} | sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d' `
|
||||
else
|
||||
entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$fname`
|
||||
fi
|
||||
if [ ! -z "${entry}" ] ; then
|
||||
echo "${entry}"
|
||||
else
|
||||
echo "* ${infoname}: (${infoname})."
|
||||
fi
|
||||
fi
|
||||
|
||||
# remove the name from the directory listing
|
||||
infofiles=`echo "" ${infofiles} "" | sed -e "s/ ${fname} / /" -e "s/ / /g"`
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
line=`expr $line + 1`
|
||||
done
|
||||
|
||||
if [ -z "${infofiles}" ] ; then
|
||||
exit 0
|
||||
elif [ $lines -gt 0 ]; then
|
||||
echo
|
||||
fi
|
||||
|
||||
# Sort remaining files by INFO-DIR-SECTION.
|
||||
prevsect=
|
||||
filesectdata=`(cd ${INFODIR}; fgrep INFO-DIR-SECTION /dev/null ${infofiles} | \
|
||||
fgrep -v 'INFO-DIR-SECTION Miscellaneous' | \
|
||||
sort -t: -k2 -k1 | tr ' ' '_')`
|
||||
for sectdata in ${filesectdata}; do
|
||||
file=`echo ${sectdata} | cut -d: -f1`
|
||||
section=`sed -n -e 's/^INFO-DIR-SECTION //p' ${INFODIR}/${file}`
|
||||
infofiles=`echo "" ${infofiles} "" | sed -e "s/ ${file} / /" -e "s/ / /g"`
|
||||
|
||||
if [ "${prevsect}" != "${section}" ] ; then
|
||||
if [ ! -z "${prevsect}" ] ; then
|
||||
echo ""
|
||||
fi
|
||||
echo "${section}"
|
||||
prevsect="${section}"
|
||||
fi
|
||||
infoname=`echo $file | sed 's/\.gz$//'`
|
||||
infoname=`echo $infoname | sed 's/\.info$//'`
|
||||
if [ "${file##*.}" = "gz" ] ; then
|
||||
entry=`zcat ${INFODIR}/$file | sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d' `
|
||||
else
|
||||
entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$file`
|
||||
fi
|
||||
if [ ! -z "${entry}" ] ; then
|
||||
echo "${entry}"
|
||||
elif [ ! -d "${INFODIR}/${file}" ] ; then
|
||||
echo "* ${infoname}: (${infoname})."
|
||||
fi
|
||||
done
|
||||
|
||||
# Process miscellaneous files.
|
||||
for file in ${infofiles}; do
|
||||
if [ ! -z "${prevsect}" ] ; then
|
||||
echo ""
|
||||
echo "Miscellaneous"
|
||||
prevsect=""
|
||||
fi
|
||||
|
||||
infoname=`echo $file | sed 's/\.gz$//'`
|
||||
infoname=`echo $infoname | sed 's/\.info$//'`
|
||||
if [ "${file##*.}" = "gz" ] ; then
|
||||
entry=`zcat ${INFODIR}/${file} | sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d'`
|
||||
else
|
||||
entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' \
|
||||
-e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/$file`
|
||||
fi
|
||||
|
||||
|
||||
if [ ! -z "${entry}" ] ; then
|
||||
echo "${entry}"
|
||||
elif [ ! -d "${INFODIR}/${file}" ] ; then
|
||||
echo "* ${infoname}: (${infoname})."
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
Index: gcc/doc/invoke.texi
|
||||
===================================================================
|
||||
RCS file: /cvsroot/gcc/gcc/gcc/doc/invoke.texi,v
|
||||
retrieving revision 1.364
|
||||
diff -c -3 -p -r1.364 invoke.texi
|
||||
*** gcc/doc/invoke.texi 21 Nov 2003 11:42:58 -0000 1.364
|
||||
--- gcc/doc/invoke.texi 22 Nov 2003 08:12:35 -0000
|
||||
*************** in the following sections.
|
||||
*** 228,234 ****
|
||||
-Wno-multichar -Wnonnull -Wpacked -Wpadded @gol
|
||||
-Wparentheses -Wpointer-arith -Wredundant-decls @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow @gol
|
||||
! -Wsign-compare -Wstrict-aliasing @gol
|
||||
-Wswitch -Wswitch-default -Wswitch-enum @gol
|
||||
-Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized @gol
|
||||
-Wunknown-pragmas -Wunreachable-code @gol
|
||||
--- 228,234 ----
|
||||
-Wno-multichar -Wnonnull -Wpacked -Wpadded @gol
|
||||
-Wparentheses -Wpointer-arith -Wredundant-decls @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow @gol
|
||||
! -Wsign-compare -Wstack-protector -Wstrict-aliasing @gol
|
||||
-Wswitch -Wswitch-default -Wswitch-enum @gol
|
||||
-Wsystem-headers -Wtrigraphs -Wundef -Wuninitialized @gol
|
||||
-Wunknown-pragmas -Wunreachable-code @gol
|
||||
*************** in the following sections.
|
||||
*** 681,686 ****
|
||||
--- 681,687 ----
|
||||
-fshort-double -fshort-wchar @gol
|
||||
-fverbose-asm -fpack-struct -fstack-check @gol
|
||||
-fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol
|
||||
+ -fstack-protector -fstack-protector-all @gol
|
||||
-fargument-alias -fargument-noalias @gol
|
||||
-fargument-noalias-global -fleading-underscore @gol
|
||||
-ftls-model=@var{model} @gol
|
||||
*************** effectively. Often, the problem is that
|
||||
*** 3014,3019 ****
|
||||
--- 3015,3024 ----
|
||||
complex; GCC will refuse to optimize programs when the optimization
|
||||
itself is likely to take inordinate amounts of time.
|
||||
|
||||
+ @item -Wstack-protector
|
||||
+ @opindex Wstack-protector
|
||||
+ Warn when not issuing stack smashing protection for some reason
|
||||
+
|
||||
@item -Werror
|
||||
@opindex Werror
|
||||
Make all warnings into errors.
|
||||
*************** and grows downwards, you can use the fla
|
||||
*** 11474,11479 ****
|
||||
--- 11479,11502 ----
|
||||
@option{-fstack-limit-symbol=__stack_limit} and
|
||||
@option{-Wl,--defsym,__stack_limit=0x7ffe0000} to enforce a stack limit
|
||||
of 128KB@. Note that this may only work with the GNU linker.
|
||||
+
|
||||
+ @item -fstack-protector
|
||||
+ @item -fstack-protector-all
|
||||
+ @opindex fstack-protector
|
||||
+ @opindex fstack-protector-all
|
||||
+ @opindex fno-stack-protector
|
||||
+ Generate code to protect an application from a stack smashing
|
||||
+ attack. The features are (1) the insertion of random value next to the
|
||||
+ frame pointer to detect the integrity of the stack, (2) the reordering
|
||||
+ of local variables to place buffers after pointers to avoid the
|
||||
+ corruption of pointers that could be used to further corrupt arbitrary
|
||||
+ memory locations, (3) the copying of pointers in function arguments to
|
||||
+ an area preceding local variable buffers to prevent the corruption of
|
||||
+ pointers that could be used to further corrupt arbitrary memory
|
||||
+ locations, and the (4) omission of instrumentation code from some
|
||||
+ functions to decrease the performance overhead. If the integrity
|
||||
+ would be broken, the program is aborted. If no-stack-protector is
|
||||
+ specified, instrumentation codes are generated at every functions.
|
||||
|
||||
@cindex aliasing of parameters
|
||||
@cindex parameters, aliased
|
||||
Reference in New Issue
Block a user