In the Mozilla codebase, the compiler, at least recent version of gcc, is set to default to hidden symbols, in order to avoid a some problems.

Note

Include the whole rationale here

For this reason any system header included in the build has to be wrapped to make the symbols it defines visible. These so called system headers are listed in <tt>mozilla/config/system-headers</tt>

The main symptom of the problem is if you get a message like this at link time:

/usr/lib/gcc/i586-suse-linux/4.3/../../../../i586-suse-linux/bin/ld: libwidget_gtk2.so: hidden symbol `gtk_tree_view_new' isn't defined

This means that the header that declares <tt>gtk_tree_view_new()</tt>, <tt>gtk/gtktreeview.h</tt> in this case, is not in <tt>mozilla/config/system-headers</tt>.