Package: trafficserver Version: 4.1.2-1 Tags: sid patch Severity: important
While trying to build trafficserver on mips architecture, build fails with errors: ../../lib/ts/ink_queue.h:144:2: error: #error "unsupported processor" #error "unsupported processor" ../../lib/ts/ink_queue.h:199:70: error: there are no arguments to ‘FREELIST_POINTER’ that depend on a template parameter, so a declaration of ‘FREELIST_POINTER’ must be available [-fpermissive] ../../lib/ts/List.h:488:59: error: there are no arguments to ‘FREELIST_POINTER’ that depend on a template parameter, so a declaration of ‘FREELIST_POINTER’ must be available [-fpermissive] It is similar to the bug #743395, whose patch was merged, so I updated this patch with support of mips64, and tested on mips64el device. Please consider it. Thanks. Regards, Sphinx
From: Dejan Latinovic <[email protected]> Subject: trafficserver: support for mips Date: Wed, 2 Apr 2014 10:30:15 +0000 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=743395 While trying to build trafficserver on mips architecture, build fails with an error: In file included from ../../lib/ts/libts.h:64:0, from P_EventSystem.h:34, from EventSystem.cc:31: ../../lib/ts/ink_queue.h:144:2: error: #error "unsupported processor" #error "unsupported processor" After some extensions, I was able to build trafficserver successfully. Also, all tests passed. Mips related changes are included in add-mips-support.patch. This patch was submitted upstream: https://issues.apache.org/jira/browse/TS-2687 And it was merged: Commit 2f8179056402694ac7df828a264b4aa92ec964ea in trafficserver's branch refs/heads/master from Dejan Latinovic [ https://git-wip-us.apache.org/repos/asf?p=trafficserver.git;h=2f81790 ] --- a/lib/ts/ink_atomic.h +++ b/lib/ts/ink_atomic.h @@ -170,7 +170,7 @@ } // Special hacks for ARM 32-bit -#if defined(__arm__) && (SIZEOF_VOIDP == 4) +#if (defined(__arm__) && defined(__mips__)) && (SIZEOF_VOIDP == 4) extern ink_mutex __global_death; template<> --- a/lib/ts/ink_queue.h +++ b/lib/ts/ink_queue.h @@ -85,7 +85,7 @@ // lock, use INK_QUEUE_LD to read safely. typedef union { -#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4) +#if (defined(__i386__) || defined(__arm__) || defined(__mips__)) && (SIZEOF_VOIDP == 4) struct { void *pointer; @@ -124,7 +124,7 @@ #define TO_PTR(_x) ((void*)(_x)) #endif -#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4) +#if (defined(__i386__) || defined(__arm__) || defined(__mips__)) && (SIZEOF_VOIDP == 4) #define FREELIST_POINTER(_x) (_x).s.pointer #define FREELIST_VERSION(_x) (_x).s.version #define SET_FREELIST_POINTER_VERSION(_x,_p,_v) \ @@ -134,7 +134,7 @@ #define FREELIST_VERSION(_x) (_x).s.version #define SET_FREELIST_POINTER_VERSION(_x,_p,_v) \ (_x).s.pointer = _p; (_x).s.version = _v -#elif defined(__x86_64__) || defined(__ia64__) +#elif defined(__x86_64__) || defined(__ia64__) || defined(__mips64) #define FREELIST_POINTER(_x) ((void*)(((((intptr_t)(_x).data)<<16)>>16) | \ (((~((((intptr_t)(_x).data)<<16>>63)-1))>>48)<<48))) // sign extend #define FREELIST_VERSION(_x) (((intptr_t)(_x).data)>>48) --- a/lib/ts/ink_queue_utils.cc +++ b/lib/ts/ink_queue_utils.cc @@ -68,7 +68,7 @@ void ink_queue_load_64(void *dst, void *src) { -#if (defined(__i386__) || defined(__arm__)) && (SIZEOF_VOIDP == 4) +#if (defined(__i386__) || defined(__arm__) || defined(__mips__)) && (SIZEOF_VOIDP == 4) volatile int32_t src_version = (*(head_p *) src).s.version; void *src_pointer = (*(head_p *) src).s.pointer; --- a/plugins/experimental/geoip_acl/lulu.h +++ b/plugins/experimental/geoip_acl/lulu.h @@ -42,6 +42,10 @@ #define mb() __asm__ __volatile__ ( "dmb" : : : "memory") #define rmb() __asm__ __volatile__ ( "dmb" : : : "memory") #define wmb() __asm__ __volatile__ ( "" : : : "memory") +#elif defined(__mips__) +#define mb() __asm__ __volatile__ ( "sync" : : : "memory") +#define rmb() __asm__ __volatile__ ( "sync" : : : "memory") +#define wmb() __asm__ __volatile__ ( "" : : : "memory") #else #error "Define barriers" #endif --- a/plugins/header_filter/lulu.h +++ b/plugins/header_filter/lulu.h @@ -41,6 +41,10 @@ #define mb() __asm__ __volatile__ ( "dmb" : : : "memory") #define rmb() __asm__ __volatile__ ( "dmb" : : : "memory") #define wmb() __asm__ __volatile__ ( "" : : : "memory") +#elif defined(__mips__) +#define mb() __asm__ __volatile__ ( "sync" : : : "memory") +#define rmb() __asm__ __volatile__ ( "sync" : : : "memory") +#define wmb() __asm__ __volatile__ ( "" : : : "memory") #elif defined(__arm__) #else #error "Define barriers" --- a/plugins/header_rewrite/lulu.h +++ b/plugins/header_rewrite/lulu.h @@ -39,6 +39,10 @@ #define mb() __asm__ __volatile__ ( "dmb" : : : "memory") #define rmb() __asm__ __volatile__ ( "dmb" : : : "memory") #define wmb() __asm__ __volatile__ ( "" : : : "memory") +#elif defined(__mips__) +#define mb() __asm__ __volatile__ ( "sync" : : : "memory") +#define rmb() __asm__ __volatile__ ( "sync" : : : "memory") +#define wmb() __asm__ __volatile__ ( "" : : : "memory") #else #error "Define barriers" #endif

