[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