Mail Archives: djgpp-workers/2001/11/25/13:59:26
Hello.
Eli Zaretskii wrote:
> Yes, probably. Could you also modify the makefile's so that emu387
> is built without -pg?
I've modified the makefile to build the sources without any profiling
options. This wasn't actually the cause of the failure I mentioned. This
is in the link stage:
bash-2.04$ pwd
c:/develop/djgpp.rw/src/libemu
bash-2.04$ make
../makemake.exe
makemake: scanning libemu for makefiles
c:/djgpp/bin/make.exe -f makefile.sub
c:/djgpp/bin/make.exe -C src
../makemake.exe -2
makemake: scanning libemu for object files
c:/djgpp/bin/make.exe ./../../lib/libemu.a
make.exe[1]: `../../lib/libemu.a' is up to date.
./../../hostbin/dxegen.exe ./../../bin/emu387.dxe __emu_entry src/emu387.o
id_em
u.o src/emudummy.o -L../../lib c:/djgpp/lib/gcc-lib/djgpp/3.02/libgcc.a
-lc c:/d
jgpp/lib/gcc-lib/djgpp/3.02/libgcc.a
ld -X -S -r -o dxe__tmp.o -L./../../lib src/emu387.o id_emu.o
src/emudummy.o -L.
./../lib c:/djgpp/lib/gcc-lib/djgpp/3.02/libgcc.a -lc
c:/djgpp/lib/gcc-lib/djgpp
/3.02/libgcc.a -T dxe.ld
./../../lib/libc.a(_write.o)(.text+0x0):_write.c: multiple definition of
`_write
'
src/emudummy.o(.text+0x10):emudummy.c: first defined here
make.exe: *** [../../bin/emu387.dxe] Error 1
I thought it might be a function definition mistmatch that was causing
this error, so I made the changes shown in the diff at the end of the
mail. This didn't fix it.
I thought linking took the first object file resolving for a
variable/function name and did not care about subsequent objects
containing it.
Do you have any suggestions on how to fix this? Are there any options I
can pass to ld from dxegen that would help? I had a look through the ld
options in info, but nothing stood out.
The proper solution, I guess, is to build two versions of libc - one with
and one without profiling - and to link against the non-profiling version
when building DXEs.
> > OK to commit?
>
> Fine with me, but please add a note about this in wc204.txi.
Will do.
I also checked in a fix for a mismatch between the real prototype of
_write() in io.h and the one documented in _write.txh.
Thanks, bye, Rich =]
--
Richard Dawe
http://www.phekda.freeserve.co.uk/richdawe/
RCS file: /cvs/djgpp/djgpp/src/libemu/src/emudummy.c,v
retrieving revision 1.1
diff -p -c -3 -r1.1 emudummy.c
*** src/libemu/src/emudummy.c 1997/11/02 19:54:30 1.1
--- src/libemu/src/emudummy.c 2001/11/25 18:47:29
***************
*** 1,14 ****
/* Copyright (C) 1997 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
/* Dummy routines to enable building of emu387.dxe from libemu.a - since
we
can't do I/O, dummy the I/O routines out. */
! void vsprintf(void);
! void _write(void);
! void vsprintf(void) {}
! void _write(void) {}
int __djgpp_exception_state_ptr;
--- 1,27 ----
+ /* Copyright (C) 2001 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1997 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
/* Dummy routines to enable building of emu387.dxe from libemu.a - since
we
can't do I/O, dummy the I/O routines out. */
+
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <io.h>
+ #include <errno.h>
! int
! vsprintf (char *buf, const char *fmt, va_list args)
! {
! return 0;
! }
! ssize_t
! _write (int fd, const void *buf, size_t nbyte)
! {
! errno = EACCES;
! return -1;
! }
int __djgpp_exception_state_ptr;
- Raw text -