[Ace-users] TAO: Endianess problem on scale pxa270 processor (gumstix board)

sebastien333 at gmail.com sebastien333 at gmail.com
Tue Sep 18 10:23:53 CDT 2007


    TAO VERSION: 1.5.10
    ACE VERSION: 5.5.10

    HOST MACHINE and OPERATING SYSTEM:
       Fedora core 3 on x86 PC

    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
    COMPILER NAME AND VERSION (AND PATCHLEVEL):

       gumstix verdex board running linux 2.6.21 , gcc 4.1.1

    THE $ACE_ROOT/ace/config.h FILE [if you use a link to a platform-
    specific file, simply state which one]:


#ifndef ACE_CONFIG_LINUX_H
#define ACE_CONFIG_LINUX_H
#include /**/ "ace/pre.h"

#define ACE_PLATFORM_CONFIG config-linux.h

#include "ace/config-linux-common.h"

#define ACE_HAS_SVR4_DYNAMIC_LINKING
#define ACE_HAS_AUTOMATIC_INIT_FINI
#define ACE_HAS_DLSYM_SEGFAULT_ON_INVALID_HANDLE

#if !defined (ACE_MT_SAFE)
#define ACE_MT_SAFE 1                           // JCEJ
12/22/96        #1
#endif

#if ACE_MT_SAFE
// Yes, we do have threads.
#define ACE_HAS_THREADS
// And they're even POSIX pthreads (LinuxThreads implementation)
#define ACE_HAS_PTHREADS
// ... and the final standard even!
#define ACE_HAS_PTHREADS_STD

// On linux this is part of pthreads
#  if (defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L)
#    if !defined (ACE_HAS_CLOCK_GETTIME)
#      if !defined(__PGI)
#        define ACE_HAS_CLOCK_GETTIME
#      endif /* __PGI */
#      define ACE_HAS_CLOCK_SETTIME
#    endif  /* !ACE_HAS_CLOCK_GETTIME */
#  endif  /* _POSIX_C_SOURCE >= 199309L */

#if !defined (ACE_HAS_PTHREADS_UNIX98_EXT)
#  define ACE_LACKS_RWLOCK_T
#else
#  define ACE_HAS_RECURSIVE_MUTEXES
#endif  /* !ACE_HAS_PTHREADS_UNIX98_EXT */

#define ACE_HAS_THREAD_SPECIFIC_STORAGE     // jcej 12/22/96
#2

#define ACE_HAS_RECURSIVE_THR_EXIT_SEMANTICS    // JCEJ 1/7-8/96

#if defined(__GLIBC__)
// Platform supports reentrant functions (i.e., all the POSIX *_r
// functions).
#define ACE_HAS_REENTRANT_FUNCTIONS

#if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)
   // Older versions of glibc lacked reentrant netdb functions
#  define ACE_LACKS_NETDB_REENTRANT_FUNCTIONS

   // glibc < 2.1 lacks pthread_attr_setstacksize()
#  define ACE_LACKS_THREAD_STACK_SIZE
#endif /* (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)
*/

// uses ctime_r & asctime_r with only two parameters vs. three
#define ACE_HAS_2_PARAM_ASCTIME_R_AND_CTIME_R
#endif

#else
// AIO support pulls in the rt library, which pulls in the pthread
// library.  Disable AIO in single-threaded builds.
# undef ACE_HAS_AIO_CALLS
#endif  /* ACE_MT_SAFE */


//#define ACE_GCC_HAS_TEMPLATE_INSTANTIATION_VISIBILITY_ATTRS 1
#define ACE_HAS_CPU_SET_T
#define ACE_LACKS_STROPTS_H
#if defined (ACE_HAS_STRBUF_T)
#undef ACE_HAS_STRBUF_T
#endif
#if defined (ACE_HAS_PTHREAD_SETSTACK)
#undef ACE_HAS_PTHREAD_SETSTACK
#endif
#define ACE_LACKS_PTHREAD_SETSTACK
#if defined (ACE_HAS_AIO_CALLS)
#undef ACE_HAS_AIO_CALLS
#endif
#if defined (ACE_HAS_GETIFADDRS)
#undef ACE_HAS_GETIFADDRS
#endif
#define ACE_LACKS_STRRECVFD
#if defined (ACE_LACKS_GETLOADAVG)
#undef ACE_HAS_GETLOADAVG
#endif
#define ACE_LACKS_GETLOADAVG


#include /**/ "ace/post.h"

#endif /* ACE_CONFIG_LINUX_H */






    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE [if you
    use a link to a platform-specific file, simply state which one
    (unless this isn't used in this case, e.g., with Microsoft Visual
    C++)]:


ACE_PLATFORM_CONFIG ?= config-linux-gumstix.h

exceptions ?= 1
debug ?= 1
optimize ?= 1
threads ?= 1

GUMSTIX_BUILDROOT   = /gumstix-dev/trunk
BUILD_ARM           = $(wildcard $(GUMSTIX_BUILDROOT)/build_arm*)
CROSS_COMPILE       = $(patsubst %g++, %, $(wildcard $(BUILD_ARM)/
staging_dir/bin/arm-linux-uclibc*-g++))

ifeq ($(strip $(CROSS_COMPILE)),)
$(error Unable to detect C++ Cross Compiler)
endif

TARGET_ARCH= -fPIC -Os -march=armv5te -mtune=xscale -Wa,-mcpu=xscale
CC  = $(CROSS_COMPILE)gcc
CXX = $(CROSS_COMPILE)g++

CPPFLAGS +=  -fPIC -Os -march=armv5te -mtune=xscale -Wa,-mcpu=xscale

no_hidden_visibility=1

HOST_ROOT=/tmp/seb/ACE_wrappers
TAO_IDL := $(HOST_ROOT)/bin/tao_idl
TAO_IDLFLAGS += -g $(HOST_ROOT)/bin/gperf
TAO_IDL_DEP := $(HOST_ROOT)/bin/tao_idl$(EXEEXT)
###################################


PLATFORM_XT_CPPFLAGS=
PLATFORM_XT_LIBS=-lXt
PLATFORM_XT_LDFLAGS=

PLATFORM_FL_CPPFLAGS=
PLATFORM_FL_LIBS=-lfltk -lfltk_forms -lfltk_gl
PLATFORM_FL_LDFLAGS=

PLATFORM_X11_CPPFLAGS=-I/usr/X11R6/include
PLATFORM_X11_LIBS=-lX11
PLATFORM_X11_LDFLAGS=-L/usr/X11R6/lib

PLATFORM_GL_CPPFLAGS=-I/usr/X11R6/include
PLATFORM_GL_LIBS    =-lGL
PLATFORM_GL_LDFLAGS =-L/usr/X11R6/lib

PLATFORM_GTK_CPPFLAGS=$(shell gtk-config --cflags)
PLATFORM_GTK_LIBS    =$(shell gtk-config --libs)
PLATFORM_GTK_LDFLAGS =

PLATFORM_FOX_CPPFLAGS=
PLATFORM_FOX_LIBS=-lFOX
PLATFORM_FOX_LDFLAGS=

# NOTE: we only support wxWindows over GTK
PLATFORM_WX_CPPFLAGS= $(shell wx-config --cxxflags) $
(PLATFORM_GTK_CPPFLAGS)
PLATFORM_WX_LIBS    = $(shell wx-config --libs)     $
(PLATFORM_GTK_LIBS)
PLATFORM_WX_LDFLAGS = $(shell wx-config --ldflags)  $
(PLATFORM_GTK_LDFLAGS)

PLATFORM_BOOST_CPPFLAGS ?=
PLATFORM_BOOST_LDLAGS ?=
PLATFORM_BOOST_UTF_LIBS ?= -lboost_unit_test_framework

PLATFORM_TCL_CPPFLAGS=
PLATFORM_TCL_LIBS=-ltcl
PLATFORM_TCL_LDFLAGS=

PLATFORM_TK_CPPFLAGS=-I$(shell . /usr/lib/tkConfig.sh && echo -n $
$TK_INC_DIR $$TK_DEFS)
PLATFORM_TK_LIBS=$(shell . /usr/lib/tkConfig.sh && echo -n $
$TK_LIB_FLAG)
PLATFORM_TK_LDFLAGS=

PLATFORM_AIO_SUPPORT := \
       $(shell test "`ls -L /usr/lib/librt.so* /lib/librt.so*`" &&
echo -DACE_HAS_AIO_CALLS)

ssl ?= 0
ifeq ($(ssl),1)
  # Some Linux OpenSSL installations compile in Kerberos support.  Add
  # the Kerberos include path to preprocessor include path.
  #
  # We should probably also add the Kerberos libraries to
  # PLATFORM_SSL_LIBS but we can't be sure if they are needed without
  # a more sophisticated check.  This will only be a problem when
  # statically linking the OpenSSL library.  The majority of
  # installations use shared OpenSSL libraries so we should be okay,
  # at least until we migrate to Autoconf.
  PLATFORM_SSL_CPPFLAGS += -I/usr/kerberos/include
endif # ssl

#insure ?= 0
#ifeq ($(insure),1)
#  CC  = insure
#  CXX = insure
#else
#  CC  ?= gcc
#  CXX ?= g++
#endif

# fix this
pipes ?= 1

CFLAGS  += -W -Wall -Wpointer-arith
ifeq ($(threads),1)
    CPPFLAGS  += -D_REENTRANT $(PLATFORM_AIO_SUPPORT)
endif # threads

ifeq ($(buildbits),32)
  CFLAGS   += -m32
  LDFLAGS  += -m32
endif
ifeq ($(buildbits),64)
  CFLAGS   += -m64
endif

#
# Rely on _GNU_SOURCE to set these defaults defined in /usr/include/
features.h
# instead of setting them directly here (older versions of gcc don't
set it
# for you): _SVID_SOURCE _BSD_SOURCE _POSIX_SOURCE
_POSIX_C_SOURCE=199506L, etc...
CPPFLAGS += -D_GNU_SOURCE

DCFLAGS += -g
DLD     = $(CXX)
LD      = $(CXX)
LIBS    += -ldl

ifeq ($(threads),1)
  LIBS += -lpthread
  # look for the rt library in the usual places
  LIBS += $(shell test "`ls -L /usr/lib/librt.so* /lib/librt.so*`" &&
echo -lrt)
endif

ifeq ($(optimize),1)
  SOFLAGS += -Wl,-O3
endif

PLATFORM_QT_CPPFLAGS ?= -I$(QTDIR)/include
PLATFORM_QT_LIBS ?= -lqt-mt
PLATFORM_QT_LDFLAGS ?= -L$(QTDIR)/lib

PIC     = -fPIC
AR      = ar
ARFLAGS = rsuv
RANLIB  = @true
SOFLAGS += $(CPPFLAGS) -shared
SOBUILD = $(COMPILE.cc) $(PIC) -o $(VSHDIR)$*.so $<; \
          $(SOLINK.cc) -o $@ $(LDFLAGS) $(VSHDIR)$*.o
PRELIB  = @true

# Test for template instantiation, add to SOFLAGS if SONAME set,
# add -E to LDFLAGS if using GNU ld
#
include $(ACE_ROOT)/include/makeinclude/platform_g++_common.GNU

# TAO with GCC 4.0.2 and -O3 seems to result in runtime issues, for
example
# the ForwardRequest PI test will fail. For GCC 4.0.2 we default to -
O2
ifeq ($(CXX_VERSION),4.0.2)
  OCFLAGS ?= -O2
else
  OCFLAGS ?= -O3
endif

CCFLAGS += $(CFLAGS) $(TEMPLATES_FLAG)

# Added line below to support "Executable Shared Object" files (as
# needed by the service configurator).
# Marius Kjeldahl <mariusk at sn.no, marius at funcom.com>
ifeq ($(threads),1)
    ESOBUILD = $(COMPILEESO.cc) $(PIC) -shared -o $(VSHDIR)$*.so $<
    ifndef PRELIB
       PRELIB = @true
    endif # ! PRELIB
endif

sctp ?=
# support for OpenSS7 SCTP
ifeq ($(sctp),openss7)
  PLATFORM_SCTP_CPPFLAGS+= -DACE_HAS_OPENSS7_SCTP
  PLATFORM_SCTP_LDFLAGS?=
  PLATFORM_SCTP_LIBS?=
endif

# support for LKSCTP (Linux Kernel 2.5)
ifeq ($(sctp),lksctp)
  PLATFORM_SCTP_CPPFLAGS+= -DACE_HAS_LKSCTP
  PLATFORM_SCTP_LDFLAGS?= -L/usr/local/lib
  PLATFORM_SCTP_LIBS?= -lsctp
endif

#### GNU gas has a string limit of 4096 characters.  On Alphas,
#### builds will fail due to running over that limit.  There are
#### at least two workarounds:
#### 1) Change the limit to 8192 characters and rebuild gas.  See
####    ACE-INSTALL.html for more information.
#### 2) Don't use -g when compiling those files.
#### If you're building on an Alpha and you haven't hacked and
#### rebuilt gas, you might need to uncomment the following.
#### ifeq ($(debug),1)
####   SUPPRESS_DASH_G = 1
#### endif # debug





    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/
default.features
    (used by MPC when you generate your own makefiles):

    AREA/CLASS/EXAMPLE AFFECTED:

    TAO/tests/Param_Test

    DOES THE PROBLEM AFFECT:
         EXECUTION : run_test.pl -t ulonglong


    SYNOPSIS:

While running the test , I use ethereal to look at the request and
notice that
the ulonglong value passed as a parameter is 00 00 00 00 67 00 00 00
instead of 67 00 00 ...

The returned values from the server have the same problem


    DESCRIPTION:

I'm Probably doing something wrong in config.h to set explicitly tell
that 64 bits are supported for this processor. Any idea of waht I
should put
in there ?

    REPEAT BY:
Use the config files above , recompile and run Param_Test/run_test.pl -
t ulonglong

    SAMPLE FIX/WORKAROUND:



More information about the Ace-users mailing list