public inbox for crossgcc@sourceware.org
 help / color / mirror / Atom feed
* lwsync used in generic ppc crosstool-NG
@ 2013-08-09 20:46 Neil Gierman
  0 siblings, 0 replies; 4+ messages in thread
From: Neil Gierman @ 2013-08-09 20:46 UTC (permalink / raw)
  To: crossgcc

[-- Attachment #1: Type: text/plain, Size: 1613 bytes --]

I am upgrading our toolchain from:

crosstool-NG 1.3.1
binutils-2.17
gcc-4.2.1

To:

crosstool-NG 1.18.0
binutils-2.20.1
gcc-4.4.6

Using the attached CT_NG config.

We create a generic PPC toolchain because we want a single toolchain
to create binaries that will run on both an e300 and e500 CPU. We do
realize that we will lose some efficiency but we are willing to deal
with that.

The problem is that a test program crashes with Illegal instruction.
Upon researching that, I found that the instruction "lwsync" is used
and one of our CPU's (e500) does not support that instruction. That
lwsync instruction is coming from libstdc++ (verified with "objdump -d
-M ppc libstdc++.so|grep lwsync"). Our 4.2.1 based toolchain does not
have any instances of lwsync in libstdc++. We have tried passing
__NO_LWSYNC__ and _TARGET_NO_LWSYNC in the config, but libstdc++ still
has lwsync in it. Is there a place I am missing to create a toolchain
for generic PPC without any instances of lwsync? Additionally, on the
4.2.1 based toolchain, I don't have to pass "-M ppc" to objdump to
resolve the instruction names, however on the 4.4.6 based toolchain I
have to pass "-M ppc" otherwise I don't get the instruction names in
the disassembler output. I don't know if this is another symptom of
the same root cause. I do have "powerpc" in both the ARCH and CPU
values of the CT-NG configuration.

I have tried to create a test program that exhibits the problem
without company proprietary information but the simple test programs
always run without issue, so the only information I can forward
publicly is the use of objdump.

[-- Attachment #2: custom.config --]
[-- Type: application/octet-stream, Size: 11181 bytes --]

#
# Automatically generated make config: don't edit
# crosstool-NG 1.18.0 Configuration
# Thu May 16 11:55:43 2013
#
CT_CONFIGURE_has_xz=y
CT_CONFIGURE_has_cvs=y
CT_CONFIGURE_has_svn=y
CT_MODULES=y

#
# Paths and misc options
#

#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
# CT_EXPERIMENTAL is not set
# CT_DEBUG_CT is not set

#
# Paths
#
CT_LOCAL_TARBALLS_DIR="${CT_TOP_DIR}/../"
# CT_SAVE_TARBALLS is not set
CT_WORK_DIR="${CT_TOP_DIR}/../build"
CT_PREFIX_DIR="${TOOLCHAIN_DIR}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
CT_RM_RF_PREFIX_DIR=y
CT_REMOVE_DOCS=y
# CT_INSTALL_DIR_RO is not set
CT_STRIP_ALL_TOOLCHAIN_EXECUTABLES=y

#
# Downloading
#
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set
# CT_USE_MIRROR is not set

#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
# CT_PATCH_NONE is not set
CT_PATCH_ORDER="bundled"

#
# Build behavior
#
CT_PARALLEL_JOBS=2
CT_LOAD=""
CT_USE_PIPES=y
CT_EXTRA_CFLAGS_FOR_BUILD=""
CT_EXTRA_LDFLAGS_FOR_BUILD=""
CT_EXTRA_CFLAGS_FOR_HOST=""
CT_EXTRA_LDFLAGS_FOR_HOST=""
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="${bash}"

#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
# CT_LOG_INFO is not set
CT_LOG_EXTRA=y
# CT_LOG_ALL is not set
# CT_LOG_DEBUG is not set
CT_LOG_LEVEL_MAX="EXTRA"
# CT_LOG_SEE_TOOLS_WARN is not set
# CT_LOG_PROGRESS_BAR is not set
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y

#
# Target options
#
CT_ARCH="powerpc"
CT_ARCH_SUPPORTS_32=y
CT_ARCH_SUPPORTS_WITH_ABI=y
CT_ARCH_SUPPORTS_WITH_CPU=y
CT_ARCH_SUPPORTS_WITH_TUNE=y
CT_ARCH_SUPPORTS_WITH_FLOAT=y
CT_ARCH_DEFAULT_32=y
CT_ARCH_ABI=""
CT_ARCH_CPU="powerpc"
CT_ARCH_TUNE=""
CT_ARCH_32=y
CT_ARCH_BITNESS=32
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_TARGET_CFLAGS="-D__NO_LWSYNC__ -DTARGET_NO_LWSYNC"
CT_TARGET_LDFLAGS=""
# CT_ARCH_alpha is not set
# CT_ARCH_arm is not set
# CT_ARCH_avr32 is not set
# CT_ARCH_blackfin is not set
# CT_ARCH_m68k is not set
# CT_ARCH_mips is not set
CT_ARCH_powerpc=y
# CT_ARCH_s390 is not set
# CT_ARCH_sh is not set
# CT_ARCH_sparc is not set
# CT_ARCH_x86 is not set
CT_ARCH_alpha_AVAILABLE=y
CT_ARCH_arm_AVAILABLE=y
CT_ARCH_avr32_AVAILABLE=y
CT_ARCH_blackfin_AVAILABLE=y
CT_ARCH_m68k_AVAILABLE=y
CT_ARCH_microblaze_AVAILABLE=y
CT_ARCH_mips_AVAILABLE=y
CT_ARCH_powerpc_AVAILABLE=y
CT_ARCH_s390_AVAILABLE=y
CT_ARCH_sh_AVAILABLE=y
CT_ARCH_sparc_AVAILABLE=y
CT_ARCH_x86_AVAILABLE=y
CT_ARCH_SUFFIX=""

#
# Generic target options
#
# CT_MULTILIB is not set
CT_ARCH_USE_MMU=y

#
# Target optimisations
#
CT_ARCH_FLOAT="soft"

#
# powerpc other options
#
CT_ARCH_powerpc_ABI=""
CT_ARCH_powerpc_ABI_DEFAULT=y
# CT_ARCH_powerpc_ABI_SPE is not set

#
# Toolchain options
#

#
# General toolchain options
#
CT_FORCE_SYSROOT=y
CT_USE_SYSROOT=y
CT_SYSROOT_NAME="sysroot"
CT_SYSROOT_DIR_PREFIX=""
CT_WANTS_STATIC_LINK=y
# CT_STATIC_TOOLCHAIN is not set
CT_TOOLCHAIN_PKGVERSION=""
CT_TOOLCHAIN_BUGURL=""

#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="custom"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""

#
# Toolchain type
#
CT_CROSS=y
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"

#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""

#
# Misc options
#
# CT_TOOLCHAIN_ENABLE_NLS is not set

#
# Operating System
#
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
CT_KERNEL="linux"
CT_KERNEL_VERSION="2.6.34.14"
# CT_KERNEL_bare_metal is not set
CT_KERNEL_linux=y
CT_KERNEL_bare_metal_AVAILABLE=y
CT_KERNEL_linux_AVAILABLE=y
# CT_KERNEL_V_3_7_3 is not set
# CT_KERNEL_V_3_7_2 is not set
# CT_KERNEL_V_3_7_1 is not set
# CT_KERNEL_V_3_7 is not set
# CT_KERNEL_V_3_6 is not set
# CT_KERNEL_V_3_5 is not set
# CT_KERNEL_V_3_4 is not set
# CT_KERNEL_V_3_3 is not set
# CT_KERNEL_V_3_2 is not set
# CT_KERNEL_V_3_1 is not set
# CT_KERNEL_V_3_0 is not set
# CT_KERNEL_V_2_6_39 is not set
# CT_KERNEL_V_2_6_38 is not set
# CT_KERNEL_V_2_6_37 is not set
# CT_KERNEL_V_2_6_36 is not set
CT_KERNEL_V_2_6_34=y
# CT_KERNEL_V_2_6_33 is not set
# CT_KERNEL_V_2_6_32 is not set
# CT_KERNEL_V_2_6_31 is not set
# CT_KERNEL_V_2_6_27 is not set
# CT_KERNEL_LINUX_CUSTOM is not set
CT_KERNEL_windows_AVAILABLE=y

#
# Common kernel options
#
CT_SHARED_LIBS=y

#
# linux other options
#
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
CT_KERNEL_LINUX_INSTALL_CHECK=y

#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
CT_BINUTILS="binutils"
CT_BINUTILS_binutils=y

#
# GNU binutils
#
# CT_BINUTILS_V_2_22 is not set
# CT_BINUTILS_V_2_21_53 is not set
# CT_BINUTILS_V_2_21_1a is not set
CT_BINUTILS_V_2_20_1a=y
# CT_BINUTILS_V_2_19_1a is not set
# CT_BINUTILS_V_2_18a is not set
CT_BINUTILS_VERSION="2.20.1a"
CT_BINUTILS_2_20_or_later=y
CT_BINUTILS_2_19_or_later=y
CT_BINUTILS_2_18_or_later=y
CT_BINUTILS_HAS_HASH_STYLE=y
CT_BINUTILS_HAS_PKGVERSION_BUGURL=y
CT_BINUTILS_FORCE_LD_BFD=y
CT_BINUTILS_LINKER_LD=y
CT_BINUTILS_LINKERS_LIST="ld"
CT_BINUTILS_LINKER_DEFAULT="bfd"
CT_BINUTILS_EXTRA_CONFIG_ARRAY=""
CT_BINUTILS_FOR_TARGET=y
CT_BINUTILS_FOR_TARGET_IBERTY=y
CT_BINUTILS_FOR_TARGET_BFD=y

#
# binutils other options
#

#
# C compiler
#
CT_CC="gcc"
CT_CC_VERSION="4.4.6"
CT_CC_CORE_PASSES_NEEDED=y
CT_CC_gcc=y
# CT_CC_GCC_SHOW_LINARO is not set
# CT_CC_V_4_7_2 is not set
# CT_CC_V_4_7_1 is not set
# CT_CC_V_4_7_0 is not set
# CT_CC_V_4_6_3 is not set
# CT_CC_V_4_6_2 is not set
# CT_CC_V_4_6_1 is not set
# CT_CC_V_4_6_0 is not set
# CT_CC_V_4_5_3 is not set
# CT_CC_V_4_5_2 is not set
# CT_CC_V_4_5_1 is not set
# CT_CC_V_4_5_0 is not set
# CT_CC_V_4_4_7 is not set
CT_CC_V_4_4_6=y
# CT_CC_V_4_4_5 is not set
# CT_CC_V_4_4_4 is not set
# CT_CC_V_4_4_3 is not set
# CT_CC_V_4_4_2 is not set
# CT_CC_V_4_4_1 is not set
# CT_CC_V_4_4_0 is not set
# CT_CC_V_4_3_6 is not set
# CT_CC_V_4_3_5 is not set
# CT_CC_V_4_3_4 is not set
# CT_CC_V_4_3_3 is not set
# CT_CC_V_4_3_2 is not set
# CT_CC_V_4_3_1 is not set
# CT_CC_V_4_2_4 is not set
# CT_CC_V_4_2_2 is not set
CT_CC_GCC_4_2_or_later=y
CT_CC_GCC_4_3_or_later=y
CT_CC_GCC_4_4=y
CT_CC_GCC_4_4_or_later=y
CT_CC_GCC_HAS_GRAPHITE=y
CT_CC_GCC_HAS_PKGVERSION_BUGURL=y
CT_CC_GCC_USE_GMP_MPFR=y
CT_CC_GCC_USE_PPL_CLOOG=y
# CT_CC_LANG_FORTRAN is not set
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_JAVA=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y

#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_JAVA is not set

#
# gcc other options
#
CT_CC_ENABLE_CXX_FLAGS="-mcpu=powerpc -msoft-float -D__NO_LWSYNC__ -DTARGET_NO_LWSYNC"
CT_CC_CORE_EXTRA_CONFIG_ARRAY=""
CT_CC_EXTRA_CONFIG_ARRAY="--with-cpu=powerpc --with-float=soft --disable-multilib"
CT_CC_STATIC_LIBSTDCXX=y
# CT_CC_GCC_SYSTEM_ZLIB is not set

#
# Optimisation features
#
CT_CC_GCC_USE_GRAPHITE=y

#
# Settings for libraries running on target
#
CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y
# CT_CC_GCC_LIBMUDFLAP is not set
# CT_CC_GCC_LIBGOMP is not set
# CT_CC_GCC_LIBSSP is not set

#
# Misc. obscure options.
#
CT_CC_CXA_ATEXIT=y
# CT_CC_GCC_DISABLE_PCH is not set
CT_CC_GCC_SJLJ_EXCEPTIONS=m
CT_CC_GCC_LDBL_128=m

#
# C-library
#
CT_LIBC="glibc"
CT_LIBC_VERSION="2.9"
# CT_LIBC_eglibc is not set
CT_LIBC_glibc=y
# CT_LIBC_uClibc is not set
CT_LIBC_eglibc_AVAILABLE=y
CT_LIBC_glibc_AVAILABLE=y
# CT_LIBC_GLIBC_V_2_17 is not set
# CT_LIBC_GLIBC_V_2_16_0 is not set
# CT_LIBC_GLIBC_V_2_15 is not set
# CT_LIBC_GLIBC_V_2_14_1 is not set
# CT_LIBC_GLIBC_V_2_14 is not set
# CT_LIBC_GLIBC_V_2_13 is not set
# CT_LIBC_GLIBC_V_2_12_2 is not set
# CT_LIBC_GLIBC_V_2_12_1 is not set
# CT_LIBC_GLIBC_V_2_11_1 is not set
# CT_LIBC_GLIBC_V_2_11 is not set
# CT_LIBC_GLIBC_V_2_10_1 is not set
CT_LIBC_GLIBC_V_2_9=y
# CT_LIBC_GLIBC_V_2_8 is not set
CT_LIBC_mingw_AVAILABLE=y
CT_LIBC_newlib_AVAILABLE=y
CT_LIBC_none_AVAILABLE=y
CT_LIBC_uClibc_AVAILABLE=y
CT_LIBC_SUPPORT_THREADS_ANY=y
CT_LIBC_SUPPORT_NPTL=y
CT_THREADS="nptl"

#
# Common C library options
#
CT_THREADS_NPTL=y
CT_LIBC_XLDD=y
CT_LIBC_glibc_familly=y
CT_LIBC_GLIBC_EXTRA_CONFIG_ARRAY="--with-cpu=powerpc --without-fp --enable-cxx-flags=-mcpu=powerpc"
CT_LIBC_GLIBC_CONFIGPARMS=""
CT_LIBC_GLIBC_EXTRA_CFLAGS="-D__NO_LWSYNC__ -DTARGET_NO_LWSYNC"
CT_LIBC_EXTRA_CC_ARGS=""
# CT_LIBC_DISABLE_VERSIONING is not set
CT_LIBC_OLDEST_ABI=""
CT_LIBC_GLIBC_FORCE_UNWIND=y
CT_LIBC_GLIBC_USE_PORTS=y
CT_LIBC_ADDONS_LIST="libidn"
# CT_LIBC_LOCALES is not set
# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_LIBC_GLIBC_MIN_KERNEL="2.6.34.14"

#
# glibc other options
#

#
# WARNING !!!                                            
#

#
#   For glibc >= 2.8, it can happen that the tarballs    
#

#
#   for the addons are not available for download.       
#

#
#   If that happens, bad luck... Try a previous version  
#

#
#   or try again later... :-(                            
#

#
# Debug facilities
#
# CT_DEBUG_dmalloc is not set
# CT_DEBUG_duma is not set
CT_DEBUG_gdb=y
CT_GDB_CROSS=y
# CT_GDB_CROSS_STATIC is not set
# CT_GDB_CROSS_SIM is not set
# CT_GDB_CROSS_PYTHON is not set
CT_GDB_CROSS_EXTRA_CONFIG_ARRAY=""
CT_GDB_NATIVE=y
CT_GDB_NATIVE_STATIC=y
CT_GDB_GDBSERVER=y
CT_GDB_GDBSERVER_HAS_IPA_LIB=y
CT_GDB_GDBSERVER_STATIC=y

#
# gdb version
#
# CT_DEBUG_GDB_SHOW_LINARO is not set
# CT_GDB_V_7_4_1 is not set
# CT_GDB_V_7_4 is not set
# CT_GDB_V_7_3_1 is not set
# CT_GDB_V_7_3a is not set
CT_GDB_V_7_2a=y
# CT_GDB_V_7_1a is not set
# CT_GDB_V_7_0_1a is not set
# CT_GDB_V_7_0a is not set
# CT_GDB_V_6_8a is not set
CT_GDB_7_2_or_later=y
CT_GDB_7_0_or_later=y
CT_GDB_HAS_PKGVERSION_BUGURL=y
CT_GDB_INSTALL_GDBINIT=y
CT_GDB_VERSION="7.2a"
# CT_DEBUG_ltrace is not set
CT_DEBUG_strace=y
# CT_STRACE_V_4_6 is not set
# CT_STRACE_V_4_5_20 is not set
CT_STRACE_V_4_5_19=y
# CT_STRACE_V_4_5_18 is not set
CT_STRACE_VERSION="4.5.19"

#
# Companion libraries
#
CT_COMPLIBS_NEEDED=y
CT_GMP_NEEDED=y
CT_MPFR_NEEDED=y
CT_PPL_NEEDED=y
CT_CLOOG_NEEDED=y
CT_COMPLIBS=y
CT_GMP=y
CT_MPFR=y
CT_PPL=y
CT_CLOOG=y
# CT_GMP_V_5_0_2 is not set
# CT_GMP_V_5_0_1 is not set
CT_GMP_V_4_3_2=y
# CT_GMP_V_4_3_1 is not set
# CT_GMP_V_4_3_0 is not set
CT_GMP_VERSION="4.3.2"
# CT_MPFR_V_3_1_0 is not set
# CT_MPFR_V_3_0_1 is not set
CT_MPFR_V_3_0_0=y
# CT_MPFR_V_2_4_2 is not set
# CT_MPFR_V_2_4_1 is not set
# CT_MPFR_V_2_4_0 is not set
CT_MPFR_VERSION="3.0.0"
# CT_PPL_V_0_11_2 is not set
# CT_PPL_V_0_11_1 is not set
# CT_PPL_V_0_11 is not set
CT_PPL_V_0_10_2=y
CT_PPL_VERSION="0.10.2"
CT_PPL_NEEDS_FPERMISSIVE=y
# CT_CLOOG_V_0_15_11 is not set
CT_CLOOG_V_0_15_10=y
# CT_CLOOG_V_0_15_9 is not set
# CT_CLOOG_V_0_15_8 is not set
# CT_CLOOG_V_0_15_7 is not set
# CT_CLOOG_V_0_15_6 is not set
CT_CLOOG_VERSION="0.15.10"
CT_CLOOG_0_15_1x=y
CT_CLOOG_NEEDS_AUTORECONF=y

#
# Companion libraries common options
#
# CT_COMPLIBS_CHECK is not set

[-- Attachment #3: Type: text/plain, Size: 71 bytes --]

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: lwsync used in generic ppc crosstool-NG
  2013-08-10 13:45 ` Neil Gierman
@ 2013-08-19 15:43   ` Bill Pringlemeir
  0 siblings, 0 replies; 4+ messages in thread
From: Bill Pringlemeir @ 2013-08-19 15:43 UTC (permalink / raw)
  To: Neil Gierman; +Cc: crossgcc

On 10 Aug 2013, crossgcc-list@roadrunn.com wrote:

> I doubt we will be able to move from glibc to eglibc.

'eglibc' is a drop in replacement.  It is no where near as painful as
'uCLibc' or other library switches.  The code size is a little smaller
and 'eglibc' doesn't have every esoteric feature.

Do you have a reason not to investigate?  It is a little different, but
as you are switching tools anyways, I think this impact would be
minimal.  Changing a glibc version is most likely a bigger change
impact.

Fwiw,
Bill Pringlemeir.

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: lwsync used in generic ppc crosstool-NG
  2013-08-10 10:21 Titus von Boxberg
@ 2013-08-10 13:45 ` Neil Gierman
  2013-08-19 15:43   ` Bill Pringlemeir
  0 siblings, 1 reply; 4+ messages in thread
From: Neil Gierman @ 2013-08-10 13:45 UTC (permalink / raw)
  To: crossgcc

Thanks for the information. I'll try the newer versions of gcc and
binutils. I doubt we will be able to move from glibc to eglibc.
Keeping with a generic toolchain that produces binaries for both CPU's
I think is going to be a hard requirement. I am almost debating
patching gcc so when the generic "powerpc" CPU is specified, lwsync is
disabled (like it is in rs6000.h, but no other file).

On Sat, Aug 10, 2013 at 5:21 AM, Titus von Boxberg <titus@v9g.de> wrote:
> -------- Original Message --------
>> From: "Neil Gierman" <crossgcc-list@roadrunn.com>
>> Sent: Freitag, 9. August 2013 22:47
>> To: crossgcc@sourceware.org
>> Subject: lwsync used in generic ppc crosstool-NG
>>
>> I am upgrading our toolchain from:
>>
>> crosstool-NG 1.3.1
>> binutils-2.17
>> gcc-4.2.1
>>
>> To:
>>
>> crosstool-NG 1.18.0
>> binutils-2.20.1
>> gcc-4.4.6
>>
>> Using the attached CT_NG config.
>>
>> We create a generic PPC toolchain because we want a single toolchain
>> to create binaries that will run on both an e300 and e500 CPU. We do
>> realize that we will lose some efficiency but we are willing to deal
>> with that.
>>
>> The problem is that a test program crashes with Illegal instruction.
>> Upon researching that, I found that the instruction "lwsync" is used
>> and one of our CPU's (e500) does not support that instruction. That
>> lwsync instruction is coming from libstdc++ (verified with "objdump -d
>> -M ppc libstdc++.so|grep lwsync"). Our 4.2.1 based toolchain does not
>> have any instances of lwsync in libstdc++. We have tried passing
>> __NO_LWSYNC__ and _TARGET_NO_LWSYNC in the config, but libstdc++ still
>> has lwsync in it. Is there a place I am missing to create a toolchain
>> for generic PPC without any instances of lwsync? Additionally, on the
>> 4.2.1 based toolchain, I don't have to pass "-M ppc" to objdump to
>> resolve the instruction names, however on the 4.4.6 based toolchain I
>> have to pass "-M ppc" otherwise I don't get the instruction names in
>> the disassembler output. I don't know if this is another symptom of
>> the same root cause. I do have "powerpc" in both the ARCH and CPU
>> values of the CT-NG configuration.
>>
>> I have tried to create a test program that exhibits the problem
>> without company proprietary information but the simple test programs
>> always run without issue, so the only information I can forward
>> publicly is the use of objdump.
>
> Neil,
>
> I don't have specific advice:
> I'm using (dedicated) toolchains for an e500v2 and an e300
> (gcc 4.7.2, binutils 2.22, glibc 2.13 for e300, eglibc 2.13 for e500v2)
>
> I only faintly remember the pain building an e500v2 toolchain with
> tools as old as your "new" versions.
> From that memory I'd recommend
> - use toolchains dedicated to each arch
> - use gcc >= 4.7
> - use at least binutils 2.22
> - maybe try using eglibc (2.13) for the e500
>
> I doubt that a unified e300+e500 toolchain can be reached without much
> pain.
>
> HTH.
> Regards,
> Titus
>
>

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 4+ messages in thread

* re: lwsync used in generic ppc crosstool-NG
@ 2013-08-10 10:21 Titus von Boxberg
  2013-08-10 13:45 ` Neil Gierman
  0 siblings, 1 reply; 4+ messages in thread
From: Titus von Boxberg @ 2013-08-10 10:21 UTC (permalink / raw)
  To: Neil Gierman, crossgcc

-------- Original Message --------
> From: "Neil Gierman" <crossgcc-list@roadrunn.com>
> Sent: Freitag, 9. August 2013 22:47
> To: crossgcc@sourceware.org
> Subject: lwsync used in generic ppc crosstool-NG
> 
> I am upgrading our toolchain from:
> 
> crosstool-NG 1.3.1
> binutils-2.17
> gcc-4.2.1
> 
> To:
> 
> crosstool-NG 1.18.0
> binutils-2.20.1
> gcc-4.4.6
> 
> Using the attached CT_NG config.
> 
> We create a generic PPC toolchain because we want a single toolchain
> to create binaries that will run on both an e300 and e500 CPU. We do
> realize that we will lose some efficiency but we are willing to deal
> with that.
> 
> The problem is that a test program crashes with Illegal instruction.
> Upon researching that, I found that the instruction "lwsync" is used
> and one of our CPU's (e500) does not support that instruction. That
> lwsync instruction is coming from libstdc++ (verified with "objdump -d
> -M ppc libstdc++.so|grep lwsync"). Our 4.2.1 based toolchain does not
> have any instances of lwsync in libstdc++. We have tried passing
> __NO_LWSYNC__ and _TARGET_NO_LWSYNC in the config, but libstdc++ still
> has lwsync in it. Is there a place I am missing to create a toolchain
> for generic PPC without any instances of lwsync? Additionally, on the
> 4.2.1 based toolchain, I don't have to pass "-M ppc" to objdump to
> resolve the instruction names, however on the 4.4.6 based toolchain I
> have to pass "-M ppc" otherwise I don't get the instruction names in
> the disassembler output. I don't know if this is another symptom of
> the same root cause. I do have "powerpc" in both the ARCH and CPU
> values of the CT-NG configuration.
> 
> I have tried to create a test program that exhibits the problem
> without company proprietary information but the simple test programs
> always run without issue, so the only information I can forward
> publicly is the use of objdump.

Neil,

I don't have specific advice:
I'm using (dedicated) toolchains for an e500v2 and an e300
(gcc 4.7.2, binutils 2.22, glibc 2.13 for e300, eglibc 2.13 for e500v2)

I only faintly remember the pain building an e500v2 toolchain with
tools as old as your "new" versions.
From that memory I'd recommend
- use toolchains dedicated to each arch
- use gcc >= 4.7
- use at least binutils 2.22
- maybe try using eglibc (2.13) for the e500

I doubt that a unified e300+e500 toolchain can be reached without much 
pain.

HTH.
Regards,
Titus



--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-08-19 15:43 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-09 20:46 lwsync used in generic ppc crosstool-NG Neil Gierman
2013-08-10 10:21 Titus von Boxberg
2013-08-10 13:45 ` Neil Gierman
2013-08-19 15:43   ` Bill Pringlemeir

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).