http://bugs.winehq.org/show_bug.cgi?id=17474
Summary: winhlp32.exe.so exports flex/yacc-related symbols Product: Wine Version: unspecified Platform: Other URL: http://blog.flameeyes.eu/2008/02/09/flex-and-linking- conflicts-or-a-possible-reason-why-php-and-recode-are- so-crashy OS/Version: other Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: flameeyes@gmail.com
yamato ~ # nm -D /usr/lib/wine/winhlp32.exe.so | grep yy 00024780 T yy_create_buffer 00024040 T yy_delete_buffer 0003a910 B yy_flex_debug 00023e30 T yy_flush_buffer 00024540 T yy_scan_buffer 00024600 T yy_scan_bytes 000246a0 T yy_scan_string 00024480 T yy_switch_to_buffer 00024250 T yyalloc 00024010 T yyfree 00023fc0 T yyget_debug 00023ee0 T yyget_in 00023f20 T yyget_leng 00023ec0 T yyget_lineno 00023f00 T yyget_out 00023f40 T yyget_text 0003a908 B yyin 0003a94c B yyleng 000248f0 T yylex 00024160 T yylex_destroy 0003a7c0 D yylineno 0003a954 B yylval 0003a90c B yyout 000240b0 T yypop_buffer_state 000243b0 T yypush_buffer_state 00024220 T yyrealloc 00024810 T yyrestart 00023fe0 T yyset_debug 00023f80 T yyset_in 00023f60 T yyset_lineno 00023fa0 T yyset_out 0003a950 B yytext 00024000 T yywrap
These symbols should be hidden somehow so that they don't risk colliding with the same symbol as exported by other libraries loaded in the same process's address space. The risk of that is not too low since I see at least one Unix ODBC implementation exports yylex at least.
HTH, Diego
http://bugs.winehq.org/show_bug.cgi?id=17474
--- Comment #1 from Alexandre Julliard julliard@winehq.org 2009-02-19 16:48:58 --- All Wine libraries are linked with -Bsymbolic, and opened without RTLD_GLOBAL, so I don't see how the symbols could possibly interfere with anything else.
Do you have evidence of a real problem, or is this just a theoretical concern?
http://bugs.winehq.org/show_bug.cgi?id=17474
--- Comment #2 from Diego E. 'Flameeyes' Pettenò flameeyes@gmail.com 2009-02-19 17:36:03 --- Mostly theorical, I'm trying to track down (and get addressed) all the positives, be them false or true, so that the situation can be then checked on new packages as a stopping issue.
Would it be possible to get -fvisibility=hidden used in Wine? I guess it shouldn't be too complex to wire up beside for the configure check, since Win32 already forces explicit declaration of exported symbols.
I haven't looked at (or actually used) Wine in a while, but if it would be just a matter of wiring up the buildsystem I can see to help. Sincerely I'd be interested in getting this addressed in Wine for the only reason that it's a popular and visible project, and getting such a fix pushed here would help the argument on other projects as well.
http://bugs.winehq.org/show_bug.cgi?id=17474
--- Comment #3 from Alexandre Julliard julliard@winehq.org 2009-02-20 03:12:41 --- (In reply to comment #2)
Would it be possible to get -fvisibility=hidden used in Wine? I guess it shouldn't be too complex to wire up beside for the configure check, since Win32 already forces explicit declaration of exported symbols.
We don't declare exported symbols explicitly in Wine, so that would be quite a bit of work. And actually the right fix is to declare the private symbols hidden, like we do in a couple of places already.
I haven't looked at (or actually used) Wine in a while, but if it would be just a matter of wiring up the buildsystem I can see to help. Sincerely I'd be interested in getting this addressed in Wine for the only reason that it's a popular and visible project, and getting such a fix pushed here would help the argument on other projects as well.
I'm not sure Wine is a good example, the Wine libraries are not standard shared libraries, they are not meant to be linked against, and they use non-standard namespace rules.
http://bugs.winehq.org/show_bug.cgi?id=17474
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |enhancement
http://bugs.winehq.org/show_bug.cgi?id=17474
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |WONTFIX
--- Comment #4 from Dmitry Timoshkov dmitry@codeweavers.com 2009-02-24 23:14:20 --- Have a look at any other ELF library/executable, any global symbol is exposed, and as Alexandre pointed out Wine is a special case.
http://bugs.winehq.org/show_bug.cgi?id=17474
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #5 from Dmitry Timoshkov dmitry@codeweavers.com 2009-02-24 23:14:29 --- Closing.