Compiling glibc-2.3.2 (-2.3.3?) snapshot 20031115 with gcc-3.4 snapshot 20031119
Matt Austern
austern@apple.com
Tue Dec 2 20:15:00 GMT 2003
On Dec 2, 2003, at 7:37 AM, Jakub Jelinek wrote:
> On Tue, Dec 02, 2003 at 09:35:51AM -0800, Matt Austern wrote:
>> As you might have noticed from following the discussion on the
>> gcc list, the main reason I haven't fixed this yet is that we haven't
>> yet reached an agreement about what the semantics of the
>> visibility attribute should be when you've got multiple declarations
>> of the same symbol.
>>
>> What assumptions does the glibc source make about this, and how
>> tightly wedded are you to those assumptions?
>
> glibc assumes that if there is a decl without visibility attribute
> and decl with visibility attribute, that the visibility specified
> in the visibility attribute is used.
>
> Say:
> int foo (void) __attribute__((visibility ("hidden")));
> int bar (void);
> ...
> int foo (void) { return 1; }
> int __attribute__((visibility ("hidden"))) bar (void) { return 2; }
>
> then both foo and bar are hidden.
OK! The next question, then: do you assume that explicitly
providing a default visibility, and not providing a visibility at
all, are different? That is, would you expect
int foo (void) __attribute__((visibility ("hidden")));
int foo (void) __attribute__((visibility ("default"))) { return 137;
}
to behave differently than
int foo (void) __attribute__((visibility ("hidden")));
int foo (void) { return 137; }?
(I hope the answer is no, and that default is just default. I know
how to make the compiler treat the two kinds of default differently,
but it'll be a little more expensive and convoluted.)
--Matt
More information about the Libc-alpha
mailing list