Bug 80683

Summary: [EFL] Can't run layout test without SHARED_CORE=ON
Product: WebKit Reporter: Gyuyoung Kim <gyuyoung.kim>
Component: WebKit EFLAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: fred.wang, gyuyoung.kim, lucas.de.marchi, rakuco
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 135884    
Bug Blocks:    

Description Gyuyoung Kim 2012-03-09 00:25:27 PST
EFL DRT is only able to run layout test with enabling SHARED_CORE option. I'm suspecting that this problem is because EFL DRT uses WebCore, WTF classes directly.

For example, there are some codes in DumpRenderTree/efl.

  WebCore::KURL baseURL(WebCore::KURL(), String::fromUTF8(ewk_frame_uri_get(browser->mainFrame())));
  WebCore::CaseInsensitive;
  WebCore::FindOptions
  WTF::codePointCompare
  ...


If this is true, I think we need to change above codes with primitive data or public APIs. If anyone know other reasons or solutions related to this problem, please let me know.
Comment 1 Raphael Kubo da Costa (:rakuco) 2012-03-09 05:58:13 PST
The proposed solution does not scale and is a work-around for the problem. The problem's that with SHARED_CORE=OFF all the symbols are linked into a single .so, which is then has most of them stripped via eflsymbols.filter.

I haven't had time to think of a proper fix which doesn't involve editing maintaining a large symbol map file like the GTK+ port (among others) do.
Comment 2 Gyuyoung Kim 2012-03-11 23:06:55 PDT
>> The proposed solution does not scale and is a work-around for the problem.

I don't understand why it is work-around solution. I think DumpRenderTree doesn't need to use WebKit classes related to util(e.g. String, KURL, Vector) except for essential classes. In my opinion, we need to change WebKit util classes with standard library or primitive data type.

Then, size of symbol table maintained by us is more smaller than now.
Comment 3 Raphael Kubo da Costa (:rakuco) 2012-03-12 07:46:02 PDT
(In reply to comment #2)
> >> The proposed solution does not scale and is a work-around for the problem.
> 
> I don't understand why it is work-around solution. I think DumpRenderTree doesn't need to use WebKit classes related to util(e.g. String, KURL, Vector) except for essential classes. In my opinion, we need to change WebKit util classes with standard library or primitive data type.

Classifying what is considered "WebKit util" is subjective (what would you use instead of KURL, for example?), and in the end you'll have to convert to those types anyway. Adding a lot of new one-line functions whose sole purpose is to serve as wrappers around WebCore calls doesn't sound very good (and in the end these symbols will need to be exported too).

Another option we can consider is linking libewebkit.so twice -- once for the final installation stripping as many symbols as we can, and then for DRT without filtering any symbols. The downside of this approach is that the way the library is linked may differ more and more over time.
Comment 4 Gyuyoung Kim 2014-08-24 22:48:18 PDT
By adding DEVELOPER_MODE, EFL port can run layout test without SHARED_CORE=ON at the moment. So close this bug.

http://trac.webkit.org/changeset/172894