| Summary: | build failure mac os x : ld: in ../VEX/libvex-x86-darwin.a, archive has no table of contents | ||
|---|---|---|---|
| Product: | [Developer tools] valgrind | Reporter: | Bob Clary [:bc] <bclary> |
| Component: | general | Assignee: | Julian Seward <jseward> |
| Status: | VERIFIED FIXED | ||
| Severity: | normal | CC: | njn |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Other | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
| Attachments: |
configure output
make output patch ar man page patch |
||
|
Description
Bob Clary [:bc]
2009-06-05 02:38:27 UTC
Bob, can you attach a file containing the full output of 'configure' and 'make'? Hopefully seeing the make output for the building of libvex-x86-darwin.a will indicate something. Created attachment 34272 [details]
configure output
Created attachment 34273 [details]
make output
It's a mystery to me, but Googling came up with some suggestions. - Try running 'ranlib' on libvex-x86-darwin.a and then rerunning 'make'. - Does the path containing Valgrind have any spaces? If so, try removing them. http://www.haskell.org/pipermail/glasgow-haskell-users/2007-October/013322.html http://dev.eclipse.org/newslists/news.eclipse.tools.cdt/msg16863.html If 'ranlib' fixes it, the above pages suggest that adding -s to our invocation of 'ar' might fix the problem. ranlib "fixed" it. Thanks! Created attachment 34277 [details]
patch
So the question now is: why the problem on Bob's machine? On my Mac, 'ar' unbelievably doesn't support -h or --help or -v or --version so I can't work out what version number it is.
Anyway, it seems that we use "ar cru" in most of Valgrind, but "ar clq" for libvex.a. I barely understand all that stuff, but Bob, can you try the attached patch in the VEX/ directory/? You'll need to run 'make clean' and then 'make'. Thanks.
Created attachment 34289 [details]
ar man page
No, it didn't work. I think on my system at least it requires the -s option to write the object index into the archive. See attached ar.man
Created attachment 34290 [details]
patch
this works for me.
I was wondering why 'ar cru' was working for the other .a files built (eg. libcoregrind-x86-darwin) but now I realise that ranlib (which is equivalent to 'ar s') is run on them subsequently, but not for libvex-x86-darwin.a, because libvex-x86-darwin.a is generated via a hand-written Makefile rather than an autotool-generated one. Fixed in Vex r1900. Thanks for the report. svn up works. thanks. verified. |