Link problems with xedit, may be Darwin-only(?)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,


(This is part of a collection of patches and workarounds I have
for consideration for problems in the build process in current
cvs.  I'll just briefly describe each patch(-set) below, and if
needed will put them into bugzilla separately with more details.)


4.  Link problems with xedit, may be Darwin-only(?)


Build Log snip:

>>>>
[...] -L../../../exports/lib   lsp.o -L. -llisp -Lmp -lmp -Lre -lre -lm  -L/usr/X11R6/lib     
/usr/bin/ld: Undefined symbols:
_mpi_clear
_mpr_clear
_mpi_getsize
_mpi_getstr
_mpi_init
_mpi_seti
_mpi_sgn
_mpr_getstr
_mp_set_calloc
_mp_set_free
_mp_set_malloc
_mp_set_realloc
_mpi_add
_mpi_addi
_mpi_and
_mpi_cmp
_mpi_cmpi
_mpi_com
_mpi_divi
_mpi_divqr
_mpi_fiti
_mpi_getd
_mpi_geti
_mpi_ior
_mpi_mod
_mpi_modi
_mpi_mul
_mpi_muli
_mpi_neg
_mpi_rem
_mpi_remi
_mpi_set
_mpi_setd
_mpi_sqrt
_mpi_sub
_mpi_subi
_mpi_xor
_mpr_add
_mpr_addi
_mpr_canonicalize
_mpr_cmp
_mpr_cmpi
_mpr_div
_mpr_divi
_mpr_fiti
_mpr_getd
_mpr_init
_mpr_inv
_mpr_mul
_mpr_muli
_mpr_set
_mpr_setd
_mpr_seti
_mpr_sub
_mpr_subi
_mpi_setstr
collect2: ld returned 1 exit status
[...]
<<<<

This occurs in at least two xedit-related modules during the build.


To recreate:

Build xf86 with latest XCode (Apple-provided gcc, ld, etc.).

Possibly related env-vars:
export MACOSX_DEPLOYMENT_TARGET="10.4"
export SDKROOT="/Developer/SDKs/MacOSX10.4u.sdk"
export SDK="${SDKROOT}"
...and maybe others...

$ gcc --version
powerpc-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
[...]

$ uname -a
Darwin <hostname> 8.9.0 Darwin Kernel Version 8.9.0: Thu Feb 22 20:54:07 PST 2007; root:xnu-792.17.14~1/RELEASE_PPC Power Macintosh powerpc PowerMac7,3 Darwin

(OSX 10.4.9 running on a Dual G5 2.7GHz with 3.5GB of matched-pair
SDRAM and more...)


Discussion:

The included libs were previously built, they really are there,
plus the correct -L/-l options are in the [I]makefiles as can be
seen in the snip above.  But sometimes the "visibility" attributes
of symbols get lost for unknown reasons.  Other projects also have
this problem, albeit rarely, but always recreatable when it does
happen.

To prove the symbols were compiled but possibly not placed in the
dylibs properly, we can instead include the related .a files as
with this patch:

>>>>-cut->>>>
--- xc/programs/xedit/lisp/Imakefile_orig	2005-10-14 10:17:32 -0500
+++ xc/programs/xedit/lisp/Imakefile	2007-04-11 01:12:28 -0500
@@ -115,7 +115,7 @@
 		  $(SNPRINTF_DEFS) $(SYS_DEFINES) $(SIGNAL_DEFINES)
         DEPLIBS = mp re
        INCLUDES = -I.. -Imp -Ire -I../.. $(MISC_INCLUDES)
-LOCAL_LIBRARIES = -L. -llisp -Lmp -lmp -Lre -lre -lm $(DLLIB)
+LOCAL_LIBRARIES = ./liblisp.a -L. -llisp ./mp/libmp.a -Lmp -lmp ./re/libre.a -Lre -lre -lm $(DLLIB)
 
 #ifdef IHaveSubdirs
 ForceSubdirs($(SUBDIRS))
--- xc/programs/xedit/Imakefile_orig	2005-10-14 10:17:32 -0500
+++ xc/programs/xedit/Imakefile	2007-04-11 01:17:27 -0500
@@ -12,7 +12,7 @@
 #define PassCDebugFlags CDEBUGFLAGS="$(CDEBUGFLAGS)"
 
         SUBDIRS = lisp
-       LISPLIBS = -Llisp -llisp -Llisp/mp -lmp -Llisp/re -lre
+       LISPLIBS = ./lisp/liblisp.a -Llisp -llisp ./lisp/mp/libmp.a -Llisp/mp -lmp ./lisp/re/libre.a -Llisp/re -lre
        LISP_SRC = lisp.c
        LISP_OBJ = lisp.o
 
<<<<-cut-<<<<


See what I mean?  Now the linker is happy.

As a quick local fix so not to need to regenerate them, the
Makefiles related to the two Imakefiles shown in the patch can be
edited by hand in a similar manner, too.  I can't provide a patch
because your generated Makefiles will quite likely be completely
different than mine.  ;)

Thanks for any help.  :)


_______________________________________________
Devel mailing list
Devel@xxxxxxxxxxx
http://XFree86.Org/mailman/listinfo/devel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [X Forum]     [XFree86]     [XFree86 Newbie]     [X.Org]     [IETF Annouce]     [Security]     [Fontconfig]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]

  Powered by Linux