Geoffrey Keating wrote:

> Jonathan Turkanis <[EMAIL PROTECTED]> writes:
>
>> Geoffrey Keating wrote:
>>
>>> Jonathan Turkanis <[EMAIL PROTECTED]> writes:


>>>> If you tell us what the real question is, maybe we can answer that one.
>>
>>
>> To me, that sounds like an insult: why do you think I wouldn't ask the
>> "real" question? But I'll give you the benefit of the doubt and assume
>> you mean something as yet unspecified.


> I think the real question you meant to ask was "I am writing a book.
> I'm trying to decide what recommendations to use with respect to
> -fvisibility.  Is it widely supported?  Where?  And do you have any
> other suggestions as to what to recommend?"


I'm getting tired of this. You assumed I'm must have meant something else than what I plainly asked; once I mentioned that I was writing a book, you realized I really meant what I said.

There's no point trying to retrospectively justify your obfuscation.

> [Please don't think that I was trying to insult you.  Finding the real
> question to ask is very hard, but is often much more useful than
> finding an answer---a lot of the time, by the time you've found the
> question, the answer is obvious.]


I feel like I've finally come of age. Thanks.

> So, the first thing you should know is that all -fvisibility options
> are supported when you are using a recent GNU assembler with ELF.
> -fvisibility=default is supported everywhere. -fvisibility=hidden is
> supported on all Darwin platforms (but the other two settings are not).


That wasn't so hard now, was it?

> Something that you should understand, though, is that
> -fvisibility=hidden is not an optimisation option.  It changes the
> meaning of a program.  The change it makes is that functions,
> variables, and types defined in one dynamic library are different to
> functions, variables, and types of the same name defined in a
> different dynamic library; so they have different addresses, different
> contents, and different typeinfo.


I under this.

> Sometimes, this is exactly what you want, and other times it isn't.
> If it's mostly what you want but not completely, you can use the
> #pragma and the attribute to control it at a finer level; the option
> only sets the default for the #pragma, and the #pragma in turn only
> sets the default for the attribute.  When you build Boost as a shared
> library, that's an example of where you don't want this behaviour, at
> least for certain types defined in the Boost headers.  When you build
> it as a static library, that's an example of where you probably do
> want this behaviour.


As I mentioned in my reply to Mike Stump, the Boost problems apparently occur even if none of the visibility options, pragmas or attributes are used.

--
Jonathan Turkanis
www.kangaroologic.com





Reply via email to