This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Some tweaks for powerpc64-linux
On Wed, Mar 20, 2002 at 01:27:08PM -0500, David Edelsohn wrote:
>
> Instead of adding t-linux64 to disable earlier definitions, let's
> just clean this up.
Good idea. Works well, and I've never particularly liked "nof" as a
multi-lib name. For some reason, I always read it as "no fortran" :)
* config/rs6000/t-linux64: New.
* config.gcc (powerpc64-*-linux* <tmake_file>): Drop t-ppcos and
t-ppccomm. Use t-rs6000 and t-linux64.
* mklibgcc.in (SHLIB_MKMAP_OPTS): New variable.
* mkmap-symver.awk (dotsyms): If set, output .foo as well as foo.
--
Alan Modra
IBM OzLabs - Linux Technology Centre
diff -urpN -x*~ -xCVS -xTAGS gcc-3.1/gcc/Makefile.in gcc-3.1-patched/gcc/Makefile.in
--- gcc-3.1/gcc/Makefile.in Wed Mar 20 12:02:48 2002
+++ gcc-3.1-patched/gcc/Makefile.in Wed Mar 20 16:54:22 2002
@@ -999,6 +999,7 @@ libgcc.mk: config.status Makefile mklibg
SHLIB_EXT='$(SHLIB_EXT)' \
SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \
SHLIB_MKMAP='$(SHLIB_MKMAP)' \
+ SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \
SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \
SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \
mkinstalldirs='$(SHELL) $(srcdir)/mkinstalldirs' \
diff -urpN -x*~ -xCVS -xTAGS gcc-3.1/gcc/config/rs6000/t-linux64 gcc-3.1-patched/gcc/config/rs6000/t-linux64
--- gcc-3.1/gcc/config/rs6000/t-linux64 Thu Jan 1 09:30:00 1970
+++ gcc-3.1-patched/gcc/config/rs6000/t-linux64 Thu Mar 21 09:36:09 2002
@@ -0,0 +1,6 @@
+# Override t-linux. We don't want -fPIC.
+CRTSTUFF_T_CFLAGS_S =
+TARGET_LIBGCC2_CFLAGS =
+
+# Modify the shared lib version file
+SHLIB_MKMAP_OPTS = -v dotsyms=1
diff -urpN -x*~ -xCVS -xTAGS gcc-3.1/gcc/config.gcc gcc-3.1-patched/gcc/config.gcc
--- gcc-3.1/gcc/config.gcc Thu Mar 7 22:30:05 2002
+++ gcc-3.1-patched/gcc/config.gcc Thu Mar 21 09:36:38 2002
@@ -2677,7 +2677,7 @@ powerpc-*-openbsd*)
powerpc64-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux64.h"
out_file=rs6000/rs6000.c
- tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
+ tmake_file="rs6000/t-rs6000 t-slibgcc-elf-ver t-linux rs6000/t-linux64"
;;
powerpc64-*-gnu*)
tm_file="${cpu_type}/${cpu_type}.h elfos.h svr4.h freebsd-spec.h gnu.h rs6000/sysv4.h rs6000/linux64.h rs6000/gnu.h"
diff -urpN -x*~ -xCVS -xTAGS gcc-3.1/gcc/mklibgcc.in gcc-3.1-patched/gcc/mklibgcc.in
--- gcc-3.1/gcc/mklibgcc.in Thu Mar 7 22:30:05 2002
+++ gcc-3.1-patched/gcc/mklibgcc.in Wed Mar 20 16:54:22 2002
@@ -28,6 +28,7 @@
# SHLIB_LINK
# SHLIB_MULTILIB
# SHLIB_MKMAP
+# SHLIB_MKMAP_OPTS
# SHLIB_MAPFILES
# SHLIB_NM_FLAGS
# SHLIB_INSTALL
@@ -231,6 +232,7 @@ for file in $LIB2ADD_ST; do
done
# SHLIB_MKMAP
+# SHLIB_MKMAP_OPTS
# SHLIB_MAPFILES
for ml in $MULTILIBS; do
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
@@ -259,7 +261,7 @@ for ml in $MULTILIBS; do
mapfile="libgcc.map"
echo ""
echo "${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES $libgcc_sh_objs"
- echo ' { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_sh_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP > "'tmp-$@'
+ echo ' { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_sh_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP $SHLIB_MKMAP_OPTS > "'tmp-$@'
echo ' mv tmp-$@ $@'
fi
shlib_deps="$shlib_deps $mapfile"
diff -urpN -x*~ -xCVS -xTAGS gcc-3.1/gcc/mkmap-symver.awk gcc-3.1-patched/gcc/mkmap-symver.awk
--- gcc-3.1/gcc/mkmap-symver.awk Thu Aug 23 23:05:55 2001
+++ gcc-3.1-patched/gcc/mkmap-symver.awk Wed Mar 20 16:54:22 2002
@@ -92,7 +92,11 @@ function output(lib) {
printf(" global:\n");
for (sym in ver)
if ((ver[sym] == lib) && (sym in def))
- printf("\t%s;\n", sym);
+ {
+ printf("\t%s;\n", sym);
+ if (dotsyms)
+ printf("\t.%s;\n", sym);
+ }
if (inherit[lib])
printf("} %s;\n", inherit[lib]);