[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