yaroslav
2013-07-18 08:49:26 UTC
APE programs which require libmp fail to link due to unresolved
mallocz symbol. Easily solved by providing a local implementation,
but why: it's already there - in an alternative form though:
cpu% nm /386/lib/ape/libap.a | grep -i mallocz
9mallocz.8: T _MALLOCZ
9mallocz.8: U malloc
9mallocz.8: U memset
I don't really see the reasons for this rename, yet other APE libs
like libsec follow it:
cpu% nm /386/lib/ape/libsec.a | grep -i mallocz
sha2_64.8: U _MALLOCZ
sha2_128.8: U _MALLOCZ
rsaalloc.8: U _MALLOCZ
egalloc.8: U _MALLOCZ
dsaalloc.8: U _MALLOCZ
And libmp does not:
cpu% nm /386/lib/ape/libmp.a | grep -i mallocz
mpaux.8: U mallocz
mpmul.8: U mallocz
Here's why:
cpu% grep -ni mallocz /sys/src/ape/lib/*/*.h /sys/src/ape/lib/*/*/*.h
/sys/src/ape/lib/9/libc.h:105: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/9/libc.h:132: #define mallocz _MALLOCZ
/sys/src/ape/lib/draw/libc.h:100: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/draw/libc.h:127: #define mallocz _MALLOCZ
/sys/src/ape/lib/mp/port/libc.h:14: extern void* mallocz(ulong, int);
/sys/src/ape/lib/sec/port/libc.h:105: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/sec/port/libc.h:132: #define mallocz _MALLOCZ
Note the libmp's one standing out.
A quick fix is to bring up mallocz bits in
/sys/src/ape/lib/mp/port/libc.h into agreement with the rest.
Replacing _MALLOCZ back with mallocz within APE realm seems to me a
better option to consider.
Comments are welcome.
mallocz symbol. Easily solved by providing a local implementation,
but why: it's already there - in an alternative form though:
cpu% nm /386/lib/ape/libap.a | grep -i mallocz
9mallocz.8: T _MALLOCZ
9mallocz.8: U malloc
9mallocz.8: U memset
I don't really see the reasons for this rename, yet other APE libs
like libsec follow it:
cpu% nm /386/lib/ape/libsec.a | grep -i mallocz
sha2_64.8: U _MALLOCZ
sha2_128.8: U _MALLOCZ
rsaalloc.8: U _MALLOCZ
egalloc.8: U _MALLOCZ
dsaalloc.8: U _MALLOCZ
And libmp does not:
cpu% nm /386/lib/ape/libmp.a | grep -i mallocz
mpaux.8: U mallocz
mpmul.8: U mallocz
Here's why:
cpu% grep -ni mallocz /sys/src/ape/lib/*/*.h /sys/src/ape/lib/*/*/*.h
/sys/src/ape/lib/9/libc.h:105: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/9/libc.h:132: #define mallocz _MALLOCZ
/sys/src/ape/lib/draw/libc.h:100: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/draw/libc.h:127: #define mallocz _MALLOCZ
/sys/src/ape/lib/mp/port/libc.h:14: extern void* mallocz(ulong, int);
/sys/src/ape/lib/sec/port/libc.h:105: extern void *_MALLOCZ(int, int);
/sys/src/ape/lib/sec/port/libc.h:132: #define mallocz _MALLOCZ
Note the libmp's one standing out.
A quick fix is to bring up mallocz bits in
/sys/src/ape/lib/mp/port/libc.h into agreement with the rest.
Replacing _MALLOCZ back with mallocz within APE realm seems to me a
better option to consider.
Comments are welcome.