Summary: | [GTK] Missing symbols in 2.3.1, ABI break? | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Emilio Pozuelo Monfort <pochu27> | ||||||||
Component: | WebKitGTK | Assignee: | Nobody <webkit-unassigned> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Normal | CC: | cgarcia, commit-queue, gustavo, zan | ||||||||
Priority: | P2 | ||||||||||
Version: | 528+ (Nightly build) | ||||||||||
Hardware: | Unspecified | ||||||||||
OS: | Unspecified | ||||||||||
Attachments: |
|
Description
Emilio Pozuelo Monfort
2013-11-02 04:24:06 PDT
These are (were) generated GObject bindings functions that had their underlying implementation removed. Stubs should be put in place, I believe. Yes, we need to bring the symbols back. I'm testing a patch for this. Created attachment 215881 [details]
Patch
(In reply to comment #4) > Created an attachment (id=215881) [details] > Patch The patch is working fine for webkit_dom_processing_instruction_[gs]et_data but not for webkit_dom_html_head_element_[gs]et_profile for some reason... (In reply to comment #5) > (In reply to comment #4) > > Created an attachment (id=215881) [details] [details] > > Patch > > The patch is working fine for webkit_dom_processing_instruction_[gs]et_data but not for webkit_dom_html_head_element_[gs]et_profile for some reason... Maybe I need to add them to WebCore/bindings/gobject/webkitdom.symbols instead of to WebKitDOMCustom.symbols. Carlos, you have written all this symbols logic, any idea about this? It looks like webkitdom.symbols is a superset of WebKitDOMCustom.symbols but is not autogenerated, perhaps WebKitDOMCustom.symbols is obsolete? (In reply to comment #7) > It looks like webkitdom.symbols is a superset of WebKitDOMCustom.symbols but is not autogenerated, perhaps WebKitDOMCustom.symbols is obsolete? webkitdom.symbols contains all the API symbols and it's generated by the script gobject-run-api-break-test when manually run with --reset-results. The patch looks correct, you have to add the symbols to WebKitDOMCustom.symbols. What's exactly the error you are getting? I'm not getting any error, but the resulting libwebkitgtk-[13].0.so.0 export webkit_dom_processing_instruction_[gs]et_data but not webkit_dom_html_head_element_[gs]et_profile as they should. (In reply to comment #9) > I'm not getting any error, but the resulting libwebkitgtk-[13].0.so.0 export webkit_dom_processing_instruction_[gs]et_data but not webkit_dom_html_head_element_[gs]et_profile as they should. That's weird. The .symbols file is only to check API breaks while building and to generate the API docs, it doesn't affect in any way the symbols actually exported in the lib. Any public symbol prefixed with WEBKIT_API should be public in the lib. I have tried with git master (I was testing on 2.3.1 before), same results: emilio@titan:/opt/WebKit/lib$ nm -D libwebkitgtk-1.0.so.0 | grep webkit_dom_html_head_element_get_profile emilio@titan:/opt/WebKit/lib$ nm -D libwebkitgtk-1.0.so.0 | grep webkit_dom_processing_instruction_get_data 0000000001091270 T webkit_dom_processing_instruction_get_data Interesting though: emilio@titan:/opt/WebKit/lib$ grep webkit_dom_html_head_element_get_profile libwebkitgtk-1.0.so.0.20.0 Binary file libwebkitgtk-1.0.so.0.20.0 matches Poking a bit more: emilio@titan:~/src/WebKit/.libs$ nm libGObjectDOMBindings.a | grep webkit_dom_html_head_element_get_profile 0000000000001020 T _Z40webkit_dom_html_head_element_get_profileP25_WebKitDOMHTMLHeadElement 00000000000000c0 r _ZZ40webkit_dom_html_head_element_get_profileP25_WebKitDOMHTMLHeadElementE8__func__ emilio@titan:~/src/WebKit/.libs$ nm libGObjectDOMBindings.a | grep webkit_dom_processing_instruction_get_data 0000000000001070 T webkit_dom_processing_instruction_get_data 0000000000000040 r _ZZ42webkit_dom_processing_instruction_get_dataE8__func__ emilio@titan:~/src/WebKit/.libs$ echo "_Z40webkit_dom_html_head_element_get_profileP25_WebKitDOMHTMLHeadElement" | c++filt webkit_dom_html_head_element_get_profile(_WebKitDOMHTMLHeadElement*) emilio@titan:~/src/WebKit/.libs$ echo "_ZZ42webkit_dom_processing_instruction_get_dataE8__func__" | c++filt webkit_dom_processing_instruction_get_data::__func__ I don't know much about c++ symbol mangling but that seems suspicious. I've just build with your patch (after fixing the conflicts) and it seems to work fine here: $ nm -D libwebkitgtk-3.0.so.0.20.0 | grep webkit_dom_html_head_element_get_profile 00000000019a57a0 T webkit_dom_html_head_element_get_profile $ nm -D libwebkitgtk-3.0.so.0.20.0 | grep webkit_dom_processing_instruction_get_data 00000000019a57f0 T webkit_dom_processing_instruction_get_data $ nm -D libwebkit2gtk-3.0.so.25.5.0 | grep webkit_dom_html_head_element_get_profile 0000000001f1ceb0 T webkit_dom_html_head_element_get_profile $ nm -D libwebkit2gtk-3.0.so.25.5.0 | grep webkit_dom_processing_instruction_get_data 0000000001f1cf00 T webkit_dom_processing_instruction_get_data Do you have GCC 4.8 ? Comment on attachment 215881 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=215881&action=review Please make sure the patch applies in current git master. > Source/WebCore/bindings/gobject/WebKitDOMCustom.cpp:563 > +// WebKitDOMHTMLElement This should be WebKitDOMHTMLHeadElement > Source/WebCore/bindings/gobject/WebKitDOMCustom.h:478 > + * Returns: Add something after the Returns: tag to avoid a warning when generating docs. It could be just Returns: a #gchar > Source/WebCore/bindings/gobject/WebKitDOMCustom.h:481 > +WEBKIT_API gchar* webkit_dom_html_head_element_get_profile(void* self); Use WebKitDOMHTMLHeadElement* instead of void*. We use only void* when the whole class has been removed from the API. > Source/WebCore/bindings/gobject/WebKitDOMCustom.h:493 > + * Returns: > + * > +**/ > +WEBKIT_API void webkit_dom_html_head_element_set_profile(void* self, const gchar* value); Same comments here. (In reply to comment #13) > Do you have GCC 4.8 ? g++ (Debian 4.8.2-1) 4.8.2 Created attachment 216020 [details]
Patch
New patch attached addressing all your comments. (In reply to comment #14) > > Source/WebCore/bindings/gobject/WebKitDOMCustom.h:481 > > +WEBKIT_API gchar* webkit_dom_html_head_element_get_profile(void* self); > > Use WebKitDOMHTMLHeadElement* instead of void*. We use only void* when the whole class has been removed from the API. > > > Source/WebCore/bindings/gobject/WebKitDOMCustom.h:493 > > + * Returns: > > + * > > +**/ > > +WEBKIT_API void webkit_dom_html_head_element_set_profile(void* self, const gchar* value); > > Same comments here. I think that may have been the cause of the problem I was seeing (which I don't anymore) as the prototype in WebKitDOMCustom.h and WebKitDOMCustom.cpp differed. Everything's working fine now. Comment on attachment 216020 [details]
Patch
Thanks!
Comment on attachment 216020 [details] Patch Rejecting attachment 216020 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.appspot.com', '--bot-id=webkit-cq-02', 'validate-changelog', '--check-oops', '--non-interactive', 216020, '--port=mac']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!. Full output: http://webkit-queues.appspot.com/results/19578976 Created attachment 216023 [details]
Patch
Comment on attachment 216023 [details] Patch Clearing flags on attachment: 216023 Committed r158662: <http://trac.webkit.org/changeset/158662> All reviewed patches have been landed. Closing bug. |