Am 18.11.2013 23:30, schrieb Dimitry Andric:
> On 18 Nov 2013, at 23:25, Matthias Andree <mand...@freebsd.org> wrote:
>> Am 18.11.2013 23:04, schrieb Dimitry Andric:
>>
>>> I will have a look at the port meanwhile, I hope it does not pull in too
>>> many dependencies?
>>
>> Thanks for the prompt response. Trying top-of-clang-tree will take me a
>> few days until I get around to it (is clang-devel good enough for a
>> first attempt?)
> 
> Can you please run the ipsharpen.cc compilation command with -save-temps
> added on your system, and then upload the resulting .ii file somewhere?
> 
> That would save me the trouble of building most of GNOME, which it seems
> to pull in... :)

Uploaded. http://people.freebsd.org/~mandree/ has:

<http://people.freebsd.org/~mandree/ipsharpen.ii.xz>: the xzipped .ii
file (unpacked: 6.5 MB)

<http://people.freebsd.org/~mandree/ipsharpen-compile%2bwarnings.txt>:
compiler command line (make VERBOSE=1 MAKE_JOBS_UNSAFE=yes)
and early warnings.

It is still compiling, and these are the files in the working dir.

work/rawtherapee-4.0.11/rtengine/ipsharpen.cc
work/.build/rtengine/ipsharpen.ii
work/.build/rtengine/ipsharpen.s-40cd6fd9

-O1, -Oz complete in c. 5 seconds, -Os require 5.6 s on my processor.

-O2 has now spent more than 510 s

I haven't dared -O3.  I got:

$ size work/.build/rtengine/CMakeFiles/rtengine.d
   text    data     bss     dec     hex filename
 414247      16     168  414431   652df
work/.build/rtengine/CMakeFiles/rtengine.dir/ipsharpen.cc.o

and the .s file has also been xziped and uploaded to the URL above.
(unpacked 3.5 MB).

>> (Oh, and I wish we had more prominent error messages telling about an
>> ABI mismatch between libc++ and libstdc++ than just the innocuous
>> undefined references about - roughly -
>> Glib::ustring::ustring(std::basic_string<> const &) - I needed to nm -sC
>> the glibmm-2.0.so to figure out it provided the std::_1:: namespace
>> stuff for c++ and finally figure out the libraries were alright but they
>> were using the libc++ ABI rather than GCC's libstdc++.)
> 
> Most of the time, you will only find out at link time if you have mixed
> libstdc++ and libc++ STL containers...  I'm not sure if there is a nicer
> way to bring bad news. :-)

Glib shares the fate, because it defers to std:: containers where possible.

A nice way would require additional work and get the linkers to complain
that symbols resolve with a different, incompatible ABI. That would,
however, require second-guessing other ABIs and namespaces, and would
hardly be portable -- or add ABI versions into the object files and .a
and .so libraries, unless we already have ABI tags somewhere down deep
in the ELF stuff.  I never checked.


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to