diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46bfb5bf5e17e94f9ee772a13e6beb2969288de5..abab32c545bf3037dff62362db6bc8e11ed81c0e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2000-10-20 David Edelsohn <edelsohn@gnu.org> + + * Makefile.in (SHLIB_NM_FLAGS): New. + (libgcc.mk): Pass it. + * mklibgcc.in (libgcc.map): Use it. + + * rs6000/t-aix43 (SHLIB_EXT, SHLIB_LINK, SHLIB_LIBS, + SHLIB_MKMAP, SHLIB_MAPFILES, SHLIB_NM_FLAGS): New. + 2000-10-20 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * mips.h (REG_CLASS_FROM_LETTER): Cast array arg to unsigned char. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 595c62ef24747902c0b0c1ebed437b72cf7d9a21..8a7a7993627db2ec129bd7bc12c5faa24a9374ce 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -381,12 +381,15 @@ LIBGCC2_INCLUDES = # Additional target-dependent options for compiling libgcc2.a. TARGET_LIBGCC2_CFLAGS = -# Addition sources to handle exceptions; overridden by some targets. +# Additional sources to handle exceptions; overridden by some targets. LIB2ADDEH = $(srcdir)/frame-dwarf2.c # libgcc1-test target (must also be overridable for a target) LIBGCC1_TEST = libgcc1-test +# nm flags to list global symbols in libgcc object files. +SHLIB_NM_FLAGS = -pg + # List of extra executables that should be compiled for this target machine # that are used for compiling from source code to object code. # The rules for compiling them should be in the t-* file for the machine. @@ -985,6 +988,7 @@ libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) xgcc$(exeext) SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \ SHLIB_MKMAP='$(SHLIB_MKMAP)' \ SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ + SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ $(SHELL) mklibgcc > tmp-libgcc.mk mv tmp-libgcc.mk libgcc.mk diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43 index 390afe6c2f5f16409376b662e0194510af2fb2c6..7db8ae1c748c60696fd3828c11002446121f979e 100644 --- a/gcc/config/rs6000/t-aix43 +++ b/gcc/config/rs6000/t-aix43 @@ -48,6 +48,22 @@ MULTILIB_MATCHES = mcpu?power=mpower \ LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib +# Build a shared libgcc library. +SHLIB_EXT = .a +SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ + -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \ + @multilib_flags@ @shlib_objs@ -lc \ + `case @shlib_base_name@ in \ + *pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \ + *) echo -lc ;; esac` ; \ + rm -f tmp-@shlib_base_name@.a ; \ + $(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \ + mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \ + rm -f @multilib_dir@/shr.o +SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` +SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk +SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver +SHLIB_NM_FLAGS = -Bpg # Both 32-bit and 64-bit objects in archives AR_FLAGS_FOR_TARGET=-X32_64 diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in index e19d0ee627bbf0106d944d902b4fb2811c725d3b..4d957fa063be48203c15ed26f9fd3a3f33dfc789 100644 --- a/gcc/mklibgcc.in +++ b/gcc/mklibgcc.in @@ -28,6 +28,7 @@ # SHLIB_MULTILIB # SHLIB_MKMAP # SHLIB_MAPFILES +# SHLIB_NM_FLAGS # Make needs VPATH to be literal. echo 'srcdir = @srcdir@' @@ -262,7 +263,7 @@ for ml in $MULTILIBS; do mapfile="libgcc.map" echo "" echo "${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES $libgcc_objs" - echo ' { $(NM_FOR_TARGET) -pg'" $libgcc_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP > "'tmp-$@' + echo ' { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_objs; echo %%; cat $SHLIB_MAPFILES; } | "'$(AWK)'" -f $SHLIB_MKMAP > "'tmp-$@' echo ' mv tmp-$@ $@' fi shlib_deps="$shlib_deps $mapfile"