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

View: New views
2 Messages — Rating Filter:   Alert me  

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

by Shin-Cheng Mu :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

_______________________________________________
Nhc-bugs mailing list
Nhc-bugs@...
http://www.haskell.org/mailman/listinfo/nhc-bugs

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

by Malcolm Wallace :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Shin-Cheng Mu <scm@...> wrote:

>    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
_______________________________________________
Nhc-bugs mailing list
Nhc-bugs@...
http://www.haskell.org/mailman/listinfo/nhc-bugs