> Date: Tue, 10 May 2016 00:48:12 +0200 > From: Ingo Schwarze <[email protected]> > > Hi Mark, > > Mark Kettenis wrote on Tue, May 10, 2016 at 12:31:05AM +0200: > > Philip Guenther wrote: > >> On Mon, 9 May 2016, Ingo Schwarze wrote: > > >>> The libedit build system is unusual in so far as it compiles almost all > >>> C files (but not all of them) as a single compilation unit, editline.c, > >>> that #includes most of the other *.c files. > >>> ... > >>> I'd prefer compiling all modules seperately, like we do it for most > >>> other libraries. To preserve the benefit of hiding internal interfaces > >>> from the public interface, i'd like to use > >>> __attribute__((visibility("hidden"))) as suggested by Philip Guenther@. > > >> The one caveat I failed to mention is that visibility doesn't work for the > >> static library. The result is that while you can use arbitrary names for > >> static symbols, hidden symbols *do* need to follow some sort of naming > >> scheme to avoid accidental overriding when static linking. > >> > >> With that caveat: go for it! > > > well, probably should use > > > > __dso_hidden > > > > instead of > > > > __attribute__((visibility("hidden"))) > > Do i understand correctly that __dso_hidden already is a semi-standard > macro doing exactly what the "protected" macro in libedit was invented > for? Such that it would make sense to do a global > > s/protected/__dso_hidden/ > > over the whole code, making the code do in a semi-standard way > what it is now doing in a home-grown way? > > Thanks for your advice, > Ingo
Semistandard in the sense that NetBSD and DragonFlyBSD have it as well. But if there already is a portability macro in libedit, then it is fine to stick with that.
