On Thu, Aug 6, 2015 at 4:58 AM, Thomas Leonard <[email protected]> wrote:

> On 6 August 2015 at 00:26, Len Maxwell <[email protected]> wrote:
> >
> > Hi,
> >
> > After working with minios-xen a bit, I thought I could help with this
> > pioneer project.  There seem to be significantly fewer C warnings than
> the
> > last time I looked (months ago).
>
> That would be very useful!
>
>
Hi,

If I start from mirage-platform master (@ 94f01d), and make this change to
xen-posix/include/stdio.h:

-#define fprintf(x,rest...) printk(rest)
+int fprintf(FILE *stream, const char *format, ...) __THROW
__attribute__((__format__(__printf__,2,3)));

...it should eliminate a missing prototype warning for printk in
xen-ocaml.  The package builds OK, but produces link errors when I try to
make a unikernel:

$ make clean && make
[ ... ]
ld -d -static -nostdlib \
  _build/main.native.o \
  -L/opt/ml/opam/4.02.1/lib/io-page -lio_page_xen_stubs \
  $(pkg-config --static --libs mirage-xen) \
  /usr/lib/gcc/x86_64-linux-gnu/4.9/libgcc.a \
  -o mir-console.xen
/opt/ml/opam/4.02.1/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenasmrun.a(fail.o):
In function `caml_array_bound_error':
fail.c:(.text+0x2c8): undefined reference to `fwrite'
/opt/ml/opam/4.02.1/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenasmrun.a(misc.o):
In function `caml_fatal_error':
misc.c:(.text+0x42): undefined reference to `fputs'
/opt/ml/opam/4.02.1/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenasmrun.a(parsing.o):
In function `caml_parse_engine':
parsing.c:(.text+0x225): undefined reference to `fputs'
parsing.c:(.text+0x258): undefined reference to `fputc'
parsing.c:(.text+0x273): undefined reference to `fwrite'
parsing.c:(.text+0x420): undefined reference to `fwrite'
parsing.c:(.text+0x46b): undefined reference to `fwrite'
Makefile:34: recipe for target 'build' failed
make: *** [build] Error 1


Each of these caml_ functions calls fprintf.  fprintf is implemented in
xen-posix/src/mini_libc.c, but it does not use fwrite/fputs/fputc, it's
just a wrapper for mini-os print().

How do I find out where these undefined references are coming from?

thanks,
--
Len
_______________________________________________
MirageOS-devel mailing list
[email protected]
http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel

Reply via email to