[m-dev.] /usr/bin/ld: Undefined symbols:_MR_global_pointer _GC_register_dyn
Fergus Henderson
fjh at cs.mu.OZ.AU
Tue Apr 10 12:28:20 AEST 2001
On 30-Apr-2001, Terrence Brannon <princepawn at earthlink.net> wrote:
> I sort of mucked about in several places in the root of the
> distribution and a few subdirs, defining LINUX and
> PPC and whatever else to keep the compilation going.
>
> 1- What file should I have altered so that -DLINUX and -DPPC would
> propagate into all the sub-directories? Also, is there something else
> I should've defined for this build to propagate through all the subdirs?
Probably LINUX and PPC should be defined only in gcconfig.h.
> 2- Is there someway to do a recursive diff between what I have and
> what the de facto Mercury release is so that I can log my changes?
> This may be of use to others porting to Mac OS X later?
Yes. There's two ways:
(1) Using CVS (preferred).
Just go to your modified directory and type `cvs diff -u'.
If that doesn't work, you may need to set the cvs root
appropriately, e.g.
newroot=":pserver:guest at hydra.cs.mu.oz.au:/home/mercury1/repository"
find . -name Root | while read f; do echo $newroot > $f; done
and you may need to do `cvs login' (the password for our anonymous CVS
access is `guest').
(2) Using GNU diff
Untar a fresh unmodified copy of the Mercury release that you started with
in a separate directory, called say ORIG, and then if your changes are
in a directory named NEW you can just do `diff -u --recursive ORIG NEW'.
Not all versions of `diff' support the --recursive option; you need GNU diff.
You may need to do `mmake clean' and to pipe the output through
"grep -v '^Only in'" to avoid showing the differences in the automatically
generated files. You can also use the `-x' option to GNU diff to exclude
certain file extensions.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
-------------- next part --------------
#! /usr/bin/env bash
# Written by Roland McGrath <roland at gnu.org>
# Replaces all CVS/Root and CVS/Repository files in a checked-out CVS
# tree. Requires shell with # and % variable substitution (e.g. bash).
# Usage: newcvsroot <newroot> <modulename> <toplevel directory>
if [ $# != 3 ]; then
echo "usage: `basename $0` <newroot> <modulename> <toplevel directory>"
exit 1
fi
root=$1; shift
module=$1; shift
topdir=$1; shift
rep=${root##*:}
case "$topdir" in
/*|./*|../*) echo >&2 "$0 wants relative path from top of checkout"; exit 1;;
esac
find $topdir \( -name Repository -o -name Root \) -print | while read f; do
case "$f" in
*/CVS/Root) echo $root > "$f" ;;
*/CVS/Repository)
r=${module}${f#${topdir}}
echo > "$f" $rep/${r%/CVS/Repository}
;;
esac
done
More information about the developers
mailing list