Bug 91154

Summary: libWebCore.a: could not read symbols: Malformed archive while linking WebKitPluginProcess
Product: WebKit Reporter: Alban Browaeys <prahal>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: cgarcia, dan, dbates, d.nomiyama, gustavo, kalevlember, mrobinson, plaes, rakuco
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
split libWebCore into two archives to avoid the 4G ar format limit none

Description Alban Browaeys 2012-07-12 15:23:40 PDT
Created attachment 152079 [details]
split libWebCore into two archives to avoid the 4G ar format limit

I have (on debian sid that is binutils >= 2.22 but issue should apply before those releases too)
the same bug as on :
https://bugzilla.redhat.com/show_bug.cgi?id=835957
ie libWebCore.a: could not read symbols: Malformed archive while linking WebKitPluginProcess

comment 13:
"Nick Clifton 2012-07-03 11:17:15 EDT
Hi Jakub,

(In reply to comment #10)
> Isn't the ar format limitation 9.3GiB file size inside of the ar archive
> (above that it won't fit into 10 decimal digits reserved in the file header)?

There is also a 32-bit limit on the size of file offsets in symbol table at the start of the archive (if it has one).  This was the problem - the linker uses these file offsets to locate individual archive members and since these had been truncated when the archive symbol table was created, the linker failed to find the archive members that it wanted."

As libWebCore.a built with flags "-g -02" is 4.4G it goes beyond this limit.

I made a quick sample of how it could get fixed in attached patch (split libWebCore.a into libWebCoreA.a and libWebCoreB.a)
It is not ready to apply (the split is approximate , there is no changelog entry). It is there to open the discussion.
Comment 1 Martin Robinson 2012-07-17 00:23:08 PDT
If we must continue splitting WebCore, I'm not sure having simply WebCoreA and a WebCoreB is a good way to split it. I'd rather see it split to match the organizational structure of the code.
Comment 2 Dan HorĂ¡k 2012-07-25 05:50:31 PDT
The s390x elf target in binutils got support for big archives recently as a reaction on https://bugzilla.redhat.com/show_bug.cgi?id=835957
Comment 3 Priit Laes (IRC: plaes) 2012-08-28 01:29:02 PDT
(In reply to comment #1)
> If we must continue splitting WebCore, I'm not sure having simply WebCoreA and a WebCoreB is a good way to split it. I'd rather see it split to match the organizational structure of the code.

Based on the source structure, I would split 'WebCore/Modules' to libwebcoremodules.
If this wouldn't be enough, then also:
'WebCore/dom' -> libwebcoredom
'WebCore/css'  -> libwebcorecss
'WebCore/html' -> libwebcorehtml
'WebCore/svg'  -> libwebcoresvg

Any better ideas?
Comment 4 Gustavo Noronha (kov) 2012-09-06 10:35:40 PDT
libwebcoremodules is already split; I tried to split platform but it didn't work well with the pluginprocess. I think splitting svg could be a good idea, actually, maybe it'll not be as problematic, I'll give it a try.
Comment 5 Gustavo Noronha (kov) 2012-12-08 07:43:32 PST

*** This bug has been marked as a duplicate of bug 102347 ***
Comment 6 Gustavo Noronha (kov) 2012-12-08 07:44:37 PST
So, WebCore has been split - we now have libWebCore, libWebCoreModules, libWebCorePlatform and libWebCoreSVG, see: 134864 and 135538, thanks for the bug report!