ld: Undefined symbols on OS X when compiling with -t

Hi, I just installed NHC98 using Darwin Ports on a PowerPC G4 based Mac, running OS X 10.4 with GCC 4.0. NHC works fine without profiling options. When I turned on time profiling, however, NHC98 appears to have problems linking: scm$ cat text.hs main = print (foldr (+) 0 [1..10000]) scm$ hmake -nhc98 -t text nhc98 -t -c -o text.z.o text.hs nhc98 -t -o text text.z.o /tmp/tprofusr3456.c: In function 'tprofTMInitTreeUsr': /tmp/tprofusr3456.c:21: warning: incompatible implicit declaration of built-in function 'strdup' /usr/bin/ld: Undefined symbols: _FN_NHC_46Internal_46_95apply1 _FN_NHC_46Internal_46_95apply2 _TMSUB_NHC_46DErrNo _TM_NHC_46DErrNo _TMSUB_NHC_46PackedString _TM_NHC_46PackedString collect2: ld returned 1 exit status Is it a bug, or is something missing in Darwin Ports? sincerely, Shin-Cheng Mu

Shin-Cheng Mu
scm$ hmake -nhc98 -t text nhc98 -t -c -o text.z.o text.hs nhc98 -t -o text text.z.o /usr/bin/ld: Undefined symbols: _FN_NHC_46Internal_46_95apply1 _FN_NHC_46Internal_46_95apply2 _TMSUB_NHC_46DErrNo _TM_NHC_46DErrNo _TMSUB_NHC_46PackedString _TM_NHC_46PackedString
Is it a bug, or is something missing in Darwin Ports?
This is a bug. Unfortunately, the time-profiling code has not been properly maintained or tested since it was contributed to the main compiler branch. (The reason for this particular breakage is that time-profiling relies on a post-processor for object files after they have been built, and this has some some hand-coded hacks for internal Prelude-like definitions. When the runtime internals changed, these hacks were not kept in sync.) Regards, Malcolm
participants (2)
-
Malcolm Wallace
-
Shin-Cheng Mu