<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>20197</bug_id>
          
          <creation_ts>2008-07-28 10:28:21 -0700</creation_ts>
          <short_desc>WebKit does not compile on AIX</short_desc>
          <delta_ts>2012-08-02 07:40:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>420+</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>36493</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Graeme Bunyan">graeme</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kent.hansen</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>87168</commentid>
    <comment_count>0</comment_count>
    <who name="Graeme Bunyan">graeme</who>
    <bug_when>2008-07-28 10:28:21 -0700</bug_when>
    <thetext>Hi,

First off, apologies if this is filed against the wrong version of WebKit - this pertains to whichever version was pulled into Qt 4.4.  I was trying to compile Qt 4.4 on an IBM AIX 5.3 machine with version 7 of the XLC compiler, and found that the WebKit portion didn&apos;t compile.  I&apos;ll attach a basic patch showing what changes I had to make to the WebKit source to get it to compile and run.  It is not functionally complete however - details below.  Since 2 out of the 3 platforms we need to support have issues with WebKit (the other being Solarix x86 with CC 5.8), we&apos;ve decided that we can&apos;t use the WebKit shipping with Qt 4.4, at least until we can ship on a more recent platform with supported compilers, so I&apos;ve stopped any further investigation on this.  The reason I&apos;m uploading this patch is simply because I didn&apos;t want the porting work I did to go to waste (and we&apos;ll still need to build WebKit on IBM eventually, even if it&apos;s not today).  With this patch, it should now compile and link on IBM, so it&apos;s a step towards having some other kind soul figure out the broken stuff mentioned below  :-)

I sent the following to Trolltech support, who suggested posting the bug details here.  Please don&apos;t hesitate to get back to me if there are any queries.  These are not all elegant fixes, so I&apos;m not going to be offended if these fixes don&apos;t make it in in the original format (eg. the rename of Function to FunctionEnum) - I just wanted to get this stuff to compile and run to see if it would fly ;-)

Best regards,
Graeme.

----Pasted email----

...

I was able to run the webkit previewer demo and open up google, although it crashes as soon as I submit a search - see below.

Although many files were modified, it&apos;s mostly the same few things, but distributed across a number of files.  For instance:

    * XLC won&apos;t use unqualified static functions in a namespace, so static functions declared inside a .cpp inside a namespace still need to be prefixed with &lt;namespace&gt;::, even if used within the namespace in which it is declared.
    * When using the C tertiary operator &apos;&lt;condition&gt; ? &lt;truething&gt; : &lt;falsething&gt;&apos;, XLC doesn&apos;t like it when the types of truething and falsething are not completely identical.  I had to fix a number of cases where the &apos;truething&apos; was a PassRefPtr and the &apos;falsething&apos; was 0 or NULL by explicitly calling the &apos;get()&apos; method on the PassRefPtr to have it return the pointer to the internally stored data.
    * In WebCore/css/CSSParser.h, struct Value has a union and enum which both contain the member &apos;Function&apos;.  I&apos;m not sure why, but XLC stuffs these in the same namespace and complains about a clash - I just renamed the enum to FunctionEnum, and replaced occurrences of Value::Function with Value::FunctionEnum elsewhere.

As yet unresolved issues:

    * In JavaScriptCore/kjs/collector.cpp:currentThreadStackBase(), pthread_getattr_np is not defined on IBM.  This is a very platform-specific function with lots of ifdefs.  I commented it out to get it to compile, however it crashes on the first run through here.  From what I can gather, this particular API is never the same on any two given platforms, and I couldn&apos;t find a method on IBM to get thread info given a thread ID...
    * (Minor)  There are a ton of warnings like this:  The omitted keyword &quot;private&quot; is assumed for base class &quot;Noncopyable&quot;.  Classes inheriting from Noncopyable do not have a qualifier, and are being declared like &quot;class MyClass : NonCopyable&quot; instead of &quot;class MyClass : public NonCopyable&quot; (or private, or protected...).  It can be resolved by being explicit about how it is being inherited, however it&apos;s inherited in a LOT of places, so for the purposes of compilation, I left this except in a few places where the compiler was being especially spammy.


----Contents of patch file----

--- ./JavaScriptCore/bindings/npapi.h	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/bindings/npapi.h	2008-07-25 12:01:26.000000000 -0700
@@ -131,6 +131,8 @@
 typedef short int16;
 #endif
 
+#if !PLATFORM( AIX_OS )
+// int32 defined in /usr/include/sys/inttypes.h on IBM
 #ifndef _INT32
 #define _INT32
 #ifdef __LP64__
@@ -139,6 +141,7 @@
 typedef long int32;
 #endif /* __LP64__ */
 #endif
+#endif /* !PLATFORM( AIX_OS) */
 
 #ifndef FALSE
 #define FALSE (0)
--- ./JavaScriptCore/kjs/DateMath.h	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/kjs/DateMath.h	2008-07-23 10:34:29.000000000 -0700
@@ -101,7 +101,7 @@
         , year(inTm.tm_year)
         , isDST(inTm.tm_isdst)
     {
-#if !PLATFORM(WIN_OS) &amp;&amp; !PLATFORM(SOLARIS_OS) &amp;&amp; !PLATFORM(HPUX_OS)
+#if !PLATFORM(WIN_OS) &amp;&amp; !PLATFORM(SOLARIS_OS) &amp;&amp; !PLATFORM(HPUX_OS) &amp;&amp; !PLATFORM(AIX_OS)
         utcOffset = static_cast&lt;int&gt;(inTm.tm_gmtoff);
 
         int inZoneSize = strlen(inTm.tm_zone) + 1;
@@ -128,7 +128,7 @@
         ret.tm_year  =  year;
         ret.tm_isdst =  isDST;
 
-#if !PLATFORM(WIN_OS) &amp;&amp; !PLATFORM(SOLARIS_OS) &amp;&amp; !PLATFORM(HPUX_OS)
+#if !PLATFORM(WIN_OS) &amp;&amp; !PLATFORM(SOLARIS_OS) &amp;&amp; !PLATFORM(HPUX_OS) &amp;&amp; !PLATFORM(AIX_OS)
         ret.tm_gmtoff = static_cast&lt;long&gt;(utcOffset);
         ret.tm_zone = timeZone;
 #endif
--- ./JavaScriptCore/kjs/collector.cpp	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/kjs/collector.cpp	2008-07-25 11:58:45.000000000 -0700
@@ -351,15 +351,27 @@
         // e.g. on FreeBSD 5.4, neundorf@kde.org
         pthread_attr_get_np(thread, &amp;sattr);
 #else
+
+#if PLATFORM( AIX_OS )
         // FIXME: this function is non-portable; other POSIX systems may have different np alternatives
+        printf(&quot;FIXME: pthread_getattr_np\n&quot;);
+        // Unimplemented on IBM...        
+#else 
         pthread_getattr_np(thread, &amp;sattr);
 #endif
+        
+#endif
         int rc = pthread_attr_getstack(&amp;sattr, &amp;stackBase, &amp;stackSize);
         (void)rc; // FIXME: deal with error code somehow?  seems fatal...
         ASSERT(stackBase);
+        if (!stackBase) {
+            printf(&quot; -&gt; somehow got past assert &lt;-\n&quot;);
+        }
         pthread_attr_destroy(&amp;sattr);
         stackThread = thread;
     }
+    printf(&quot;  stackBase=0x%x, stackSize=%d, returning 0x%x\n&quot;,
+           stackBase, stackSize, (void*)(size_t(stackBase) + stackSize));
     return (void*)(size_t(stackBase) + stackSize);
 #endif
 #else
--- ./JavaScriptCore/kjs/date_object.cpp	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/kjs/date_object.cpp	2008-07-23 11:01:57.000000000 -0700
@@ -1012,7 +1012,7 @@
                 return NaN;
 
             int sgn = (o &lt; 0) ? -1 : 1;
-            o = abs(o);
+            o = abs((long double)o);
             if (*dateString != &apos;:&apos;) {
                 offset = ((o / 100) * 60 + (o % 100)) * sgn;
             } else { // GMT+05:00
--- ./JavaScriptCore/kjs/nodes.h	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/kjs/nodes.h	2008-07-23 10:30:09.000000000 -0700
@@ -1046,7 +1046,7 @@
   class FuncExprNode : public Node {
   public:
     FuncExprNode(const Identifier &amp;i, FunctionBodyNode *b, ParameterNode *p = 0) KJS_FAST_CALL 
-      : ident(i), param(p ? p-&gt;next.release() : 0), body(b) { if (p) { Parser::removeNodeCycle(param.get()); } addParams(); }
+        : ident(i), param(p ? p-&gt;next.release().get() : 0), body(b) { if (p) { Parser::removeNodeCycle(param.get()); } addParams(); }
     virtual JSValue *evaluate(ExecState*) KJS_FAST_CALL;
     virtual void streamTo(SourceStream&amp;) const KJS_FAST_CALL;
   private:
--- ./JavaScriptCore/wtf/Platform.h	2008-06-09 16:33:24.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./JavaScriptCore/wtf/Platform.h	2008-07-23 10:34:23.000000000 -0700
@@ -61,6 +61,10 @@
 #define WTF_PLATFORM_HPUX_OS 1
 #endif
 
+#if defined(_AIX)
+#define WTF_PLATFORM_AIX_OS 1
+#endif
+
 /* PLATFORM(UNIX) */
 /* Operating system level dependencies for Unix-like systems that */
 /* should be used regardless of operating environment */
--- ./WebCore/css/CSSParser.cpp	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/css/CSSParser.cpp	2008-07-23 11:18:20.000000000 -0700
@@ -72,7 +72,7 @@
 {
      size_t numValues = m_values.size();
      for (size_t i = 0; i &lt; numValues; i++)
-         if (m_values[i].unit == Value::Function)
+         if (m_values[i].unit == Value::FunctionEnum)
              delete m_values[i].function;
 }
 
@@ -596,7 +596,7 @@
     case CSS_PROP_CLIP:                 // &lt;shape&gt; | auto | inherit
         if (id == CSS_VAL_AUTO)
             valid_primitive = true;
-        else if (value-&gt;unit == Value::Function)
+        else if (value-&gt;unit == Value::FunctionEnum)
             return parseShape(propId, important);
         break;
 
@@ -1358,7 +1358,7 @@
         break;
 
     case CSS_PROP__WEBKIT_DASHBOARD_REGION:                 // &lt;dashboard-region&gt; | &lt;dashboard-region&gt; 
-        if (value-&gt;unit == Value::Function || id == CSS_VAL_NONE)
+        if (value-&gt;unit == Value::FunctionEnum || id == CSS_VAL_NONE)
             return parseDashboardRegions(propId, important);
         break;
     // End Apple-specific properties
@@ -1724,7 +1724,7 @@
             String value = parseURL(domString(val-&gt;string));
             parsedValue = new CSSImageValue(
                 String(KURL(styleElement-&gt;baseURL().deprecatedString(), value.deprecatedString()).url()), styleElement);
-        } else if (val-&gt;unit == Value::Function) {
+        } else if (val-&gt;unit == Value::FunctionEnum) {
             // attr(X) | counter(X [,Y]) | counters(X, Y, [,Z])
             ValueList *args = val-&gt;function-&gt;args;
             String fname = domString(val-&gt;function-&gt;name).lower();
@@ -2080,7 +2080,7 @@
             region = nextRegion.get();
         }
         
-        if (value-&gt;unit != Value::Function) {
+        if (value-&gt;unit != Value::FunctionEnum) {
             valid = false;
             break;
         }
@@ -2559,7 +2559,7 @@
                 (!strict &amp;&amp; value-&gt;unit == CSSPrimitiveValue::CSS_DIMENSION)) {
         if (!CSSParser::parseColor(domString(value-&gt;string), c, strict &amp;&amp; value-&gt;unit == CSSPrimitiveValue::CSS_IDENT))
             return false;
-    } else if (value-&gt;unit == Value::Function &amp;&amp;
+    } else if (value-&gt;unit == Value::FunctionEnum &amp;&amp;
                 value-&gt;function-&gt;args != 0 &amp;&amp;
                 value-&gt;function-&gt;args-&gt;size() == 5 /* rgb + two commas */ &amp;&amp;
                 domString(value-&gt;function-&gt;name).lower() == &quot;rgb(&quot;) {
@@ -2568,7 +2568,7 @@
             return false;
         c = makeRGB(colorValues[0], colorValues[1], colorValues[2]);
     } else if (!svg) {
-        if (value-&gt;unit == Value::Function &amp;&amp;
+        if (value-&gt;unit == Value::FunctionEnum &amp;&amp;
                 value-&gt;function-&gt;args != 0 &amp;&amp;
                 value-&gt;function-&gt;args-&gt;size() == 7 /* rgba + three commas */ &amp;&amp;
                 domString(value-&gt;function-&gt;name).lower() == &quot;rgba(&quot;) {
@@ -2576,7 +2576,7 @@
             if (!parseColorParameters(value, colorValues, true))
                 return false;
             c = makeRGBA(colorValues[0], colorValues[1], colorValues[2], colorValues[3]);
-        } else if (value-&gt;unit == Value::Function &amp;&amp;
+        } else if (value-&gt;unit == Value::FunctionEnum &amp;&amp;
                     value-&gt;function-&gt;args != 0 &amp;&amp;
                     value-&gt;function-&gt;args-&gt;size() == 5 /* hsl + two commas */ &amp;&amp;
                     domString(value-&gt;function-&gt;name).lower() == &quot;hsl(&quot;) {
@@ -2584,7 +2584,7 @@
             if (!parseHSLParameters(value, colorValues, false))
                 return false;
             c = makeRGBAFromHSLA(colorValues[0], colorValues[1], colorValues[2], 1.0);
-        } else if (value-&gt;unit == Value::Function &amp;&amp;
+        } else if (value-&gt;unit == Value::FunctionEnum &amp;&amp;
                     value-&gt;function-&gt;args != 0 &amp;&amp;
                     value-&gt;function-&gt;args-&gt;size() == 7 /* hsla + three commas */ &amp;&amp;
                     domString(value-&gt;function-&gt;name).lower() == &quot;hsla(&quot;) {
@@ -3204,7 +3204,7 @@
 
 Value&amp; CSSParser::sinkFloatingValue(Value&amp; value)
 {
-    if (value.unit == Value::Function) {
+    if (value.unit == Value::FunctionEnum) {
         ASSERT(m_floatingFunctions.contains(value.function));
         m_floatingFunctions.remove(value.function);
     }
--- ./WebCore/css/CSSParser.h	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/css/CSSParser.h	2008-07-23 11:17:29.000000000 -0700
@@ -66,7 +66,7 @@
         };
         enum {
             Operator = 0x100000,
-            Function = 0x100001,
+            FunctionEnum = 0x100001,
             Q_EMS    = 0x100002
         };
         int unit;
--- ./WebCore/dom/NamedNodeMap.h	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/dom/NamedNodeMap.h	2008-07-24 14:00:30.000000000 -0700
@@ -29,6 +29,10 @@
 #include &quot;Shared.h&quot;
 #include &lt;wtf/PassRefPtr.h&gt;
 
+// AIX requires full class declaration for Node during implicit invocation
+// of PassRefPtr&lt;Node&gt; destructor in return-by-value setNamedItemNS
+#include &quot;Node.h&quot;
+
 namespace WebCore {
 
 class Node;
--- ./WebCore/editing/CompositeEditCommand.cpp	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/editing/CompositeEditCommand.cpp	2008-07-23 11:27:33.000000000 -0700
@@ -730,7 +730,7 @@
 
     // FIXME: This is an inefficient way to preserve style on nodes in the paragraph to move.  It 
     // shouldn&apos;t matter though, since moved paragraphs will usually be quite small.
-    RefPtr&lt;DocumentFragment&gt; fragment = startOfParagraphToMove != endOfParagraphToMove ? createFragmentFromMarkup(document(), createMarkup(range.get(), 0, DoNotAnnotateForInterchange, true), &quot;&quot;) : 0;
+    RefPtr&lt;DocumentFragment&gt; fragment = startOfParagraphToMove != endOfParagraphToMove ? createFragmentFromMarkup(document(), createMarkup(range.get(), 0, DoNotAnnotateForInterchange, true), &quot;&quot;).get() : 0;
     
     // FIXME (5098931): We should add a new insert action &quot;WebViewInsertActionMoved&quot; and call shouldInsertFragment here.
     
--- ./WebCore/editing/DeleteSelectionCommand.cpp	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/editing/DeleteSelectionCommand.cpp	2008-07-23 11:28:25.000000000 -0700
@@ -718,7 +718,7 @@
     
     fixupWhitespace();
 
-    RefPtr&lt;Node&gt; placeholder = m_needPlaceholder ? createBreakElement(document()) : 0;
+    RefPtr&lt;Node&gt; placeholder = m_needPlaceholder ? createBreakElement(document()).get() : 0;
     
     mergeParagraphs();
     
--- ./WebCore/generated/CSSGrammar.cpp	2008-06-09 16:33:25.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/generated/CSSGrammar.cpp	2008-07-24 15:09:44.000000000 -0700
@@ -3174,7 +3174,7 @@
         f-&gt;name = (yyvsp[(1) - (5)].string);
         f-&gt;args = p-&gt;sinkFloatingValueList((yyvsp[(3) - (5)].valueList));
         (yyval.value).id = 0;
-        (yyval.value).unit = Value::Function;
+        (yyval.value).unit = Value::FunctionEnum;
         (yyval.value).function = f;
     ;}
     break;
@@ -3187,7 +3187,7 @@
         f-&gt;name = (yyvsp[(1) - (3)].string);
         f-&gt;args = 0;
         (yyval.value).id = 0;
-        (yyval.value).unit = Value::Function;
+        (yyval.value).unit = Value::FunctionEnum;
         (yyval.value).function = f;
   ;}
     break;
--- ./WebCore/ksvg2/svg/SVGElement.cpp	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/ksvg2/svg/SVGElement.cpp	2008-07-24 13:44:44.000000000 -0700
@@ -168,7 +168,7 @@
         event-&gt;setTarget(currentTarget);
         ExceptionCode ignored = 0;
         dispatchGenericEvent(event.release(), ignored, false);
-        currentTarget = (parent &amp;&amp; parent-&gt;isSVGElement()) ? static_pointer_cast&lt;SVGElement&gt;(parent) : 0;
+        currentTarget = (parent &amp;&amp; parent-&gt;isSVGElement()) ? static_pointer_cast&lt;SVGElement&gt;(parent).get() : 0;
     }
 }
 
--- ./WebCore/loader/icon/IconDatabase.cpp	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/loader/icon/IconDatabase.cpp	2008-07-24 13:41:34.000000000 -0700
@@ -553,7 +553,7 @@
     if (!isOpen() || iconURLOriginal.isEmpty())
         return;
     
-    RefPtr&lt;SharedBuffer&gt; data = dataOriginal ? dataOriginal-&gt;copy() : 0;
+    RefPtr&lt;SharedBuffer&gt; data = dataOriginal ? dataOriginal-&gt;copy().get() : 0;
     String iconURL = iconURLOriginal.copy();
     
     Vector&lt;String&gt; pageURLs;
--- ./WebCore/platform/Shared.h	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/platform/Shared.h	2008-07-23 11:29:39.000000000 -0700
@@ -26,7 +26,7 @@
 
 namespace WebCore {
 
-template&lt;class T&gt; class Shared : Noncopyable {
+template&lt;class T&gt; class Shared : private Noncopyable {
 public:
     Shared()
         : m_refCount(0)
@@ -71,7 +71,7 @@
 #endif
 };
 
-template&lt;class T&gt; class TreeShared : Noncopyable {
+template&lt;class T&gt; class TreeShared : private Noncopyable {
 public:
     TreeShared()
         : m_refCount(0)
--- ./WebCore/platform/graphics/PathTraversalState.cpp	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/platform/graphics/PathTraversalState.cpp	2008-07-24 11:47:33.000000000 -0700
@@ -84,7 +84,7 @@
     
     float approximateDistance() const
     {
-        return distanceLine(start, control1) + distanceLine(control1, control2) + distanceLine(control2, end);
+        return WebCore::distanceLine(start, control1) + WebCore::distanceLine(control1, control2) + WebCore::distanceLine(control2, end);
     }
         
     void split(CubicBezier&amp; left, CubicBezier&amp; right) const
@@ -125,7 +125,7 @@
     float totalLength = 0.0f;
     do {
         float length = curve.approximateDistance();
-        if ((length - distanceLine(curve.start, curve.end)) &gt; kPathSegmentLengthTolerance) {
+        if ((length - WebCore::distanceLine(curve.start, curve.end)) &gt; kPathSegmentLengthTolerance) {
             CurveType left, right;
             curve.split(left, right);
             curve = left;
@@ -159,7 +159,7 @@
 
 float PathTraversalState::closeSubpath()
 {
-    float distance = distanceLine(m_current, m_start);
+    float distance = WebCore::distanceLine(m_current, m_start);
     m_start = m_control1 = m_control2 = m_current;
     return distance;
 }
@@ -172,7 +172,7 @@
 
 float PathTraversalState::lineTo(const FloatPoint&amp; point)
 {
-    float distance = distanceLine(m_current, point);
+    float distance = WebCore::distanceLine(m_current, point);
     m_current = m_control1 = m_control2 = point;
     return distance;
 }
--- ./WebCore/rendering/RenderStyle.h	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/rendering/RenderStyle.h	2008-07-24 11:16:49.000000000 -0700
@@ -694,6 +694,14 @@
 
 //------------------------------------------------
 
+#if PLATFORM( AIX_OS )
+// AIX defines TSNONE in /usr/include/thread.h
+#if defined TSNONE
+#undef TSNONE
+#endif
+#endif
+
+
 enum ETextSecurity {
     TSNONE, TSDISC, TSCIRCLE, TSSQUARE
 };
--- ./WebCore/rendering/bidi.cpp	2008-06-09 16:33:26.000000000 -0700
+++ ../../../../../4.4.1/qt-x11-opensource-src-4.4.1-snapshot-20080610/src/3rdparty/webkit/./WebCore/rendering/bidi.cpp	2008-07-24 12:02:04.000000000 -0700
@@ -300,13 +300,13 @@
             }
         }
         if (skipInlines &amp;&amp; o-&gt;firstChild())
-            o = bidiNext(block, o, bidi, skipInlines);
+            o = WebCore::bidiNext(block, o, bidi, skipInlines);
         else
             return o; // Never skip empty inlines.
     }
 
     if (o &amp;&amp; !o-&gt;isText() &amp;&amp; !o-&gt;isBR() &amp;&amp; !o-&gt;isReplaced() &amp;&amp; !o-&gt;isFloating() &amp;&amp; !o-&gt;isPositioned())
-        o = bidiNext(block, o, bidi, skipInlines);
+        o = WebCore::bidiNext(block, o, bidi, skipInlines);
     return o;
 }
 
@@ -317,11 +317,11 @@
     if (obj-&gt;isText()) {
         pos++;
         if (pos &gt;= static_cast&lt;RenderText *&gt;(obj)-&gt;textLength()) {
-            obj = bidiNext(block, obj, bidi);
+            obj = WebCore::bidiNext(block, obj, bidi);
             pos = 0;
         }
     } else {
-        obj = bidiNext(block, obj, bidi);
+        obj = WebCore::bidiNext(block, obj, bidi);
         pos = 0;
     }
 }
@@ -463,7 +463,7 @@
         start = nextMidpoint.pos;
         sCurrMidpoint++;
         if (start &lt; end)
-            return appendRunsForObject(start, end, obj, bidi);
+            return WebCore::appendRunsForObject(start, end, obj, bidi);
     }
     else {
         if (!smidpoints || !haveNextMidpoint || (obj != nextMidpoint.obj)) {
@@ -480,7 +480,7 @@
                 if (int(nextMidpoint.pos+1) &gt; start)
                     bidi.addRun(new (obj-&gt;renderArena())
                         BidiRun(start, nextMidpoint.pos+1, obj, bidi.context(), bidi.dir()));
-                return appendRunsForObject(nextMidpoint.pos+1, end, obj, bidi);
+                return WebCore::appendRunsForObject(nextMidpoint.pos+1, end, obj, bidi);
             }
         }
         else
@@ -499,9 +499,9 @@
     int start = sor.pos;
     RenderObject *obj = sor.obj;
     while (obj &amp;&amp; obj != eor.obj &amp;&amp; obj != endOfLine.obj) {
-        appendRunsForObject(start, obj-&gt;length(), obj, *this);        
+        WebCore::appendRunsForObject(start, obj-&gt;length(), obj, *this);        
         start = 0;
-        obj = bidiNext(sor.block, obj, *this);
+        obj = WebCore::bidiNext(sor.block, obj, *this);
     }
     if (obj) {
         unsigned pos = obj == eor.obj ? eor.pos : UINT_MAX;
@@ -511,7 +511,7 @@
         }
         // It&apos;s OK to add runs for zero-length RenderObjects, just don&apos;t make the run larger than it should be
         int end = obj-&gt;length() ? pos+1 : 0;
-        appendRunsForObject(start, end, obj, *this);
+        WebCore::appendRunsForObject(start, end, obj, *this);
     }
     
     eor.increment(*this);
@@ -882,7 +882,7 @@
                     o-&gt;dirtyLineBoxes(fullLayout);
                 o-&gt;setNeedsLayout(false);
             }
-            o = bidiNext(this, o, bidi, false, &amp;endOfInline);
+            o = WebCore::bidiNext(this, o, bidi, false, &amp;endOfInline);
         }
 
         if (hasFloat)
@@ -1475,7 +1475,7 @@
                 //
                 // Optimize for a common case. If we can&apos;t find whitespace after the list
                 // item, then this is all moot. -dwh
-                RenderObject* next = bidiNext(start.block, o, bidi);
+                RenderObject* next = WebCore::bidiNext(start.block, o, bidi);
                 if (style()-&gt;collapseWhiteSpace() &amp;&amp; next &amp;&amp; !next-&gt;isBR() &amp;&amp; next-&gt;isText() &amp;&amp; static_cast&lt;RenderText*&gt;(next)-&gt;textLength() &gt; 0) {
                     RenderText *nextText = static_cast&lt;RenderText*&gt;(next);
                     UChar nextChar = nextText-&gt;characters()[0];
@@ -1751,7 +1751,7 @@
         } else
             ASSERT_NOT_REACHED();
 
-        RenderObject* next = bidiNext(start.block, o, bidi);
+        RenderObject* next = WebCore::bidiNext(start.block, o, bidi);
         bool checkForBreak = autoWrap;
         if (w &amp;&amp; w + tmpW &gt; width &amp;&amp; lBreak.obj &amp;&amp; currWS == NOWRAP)
             checkForBreak = true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>167013</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-28 04:19:06 -0800</bug_when>
    <thetext>This bug is not a blocker (it&apos;s not a Tier 1 platform)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685369</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-08-02 07:40:28 -0700</bug_when>
    <thetext>Taking the liberty of closing this. I think the Qt port was the only one interested in AIX and Qt 5 doesn&apos;t support AIX anymore.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>