PPC Linux 64 needs -fsigned-char option for gcc (original) (raw)

Volker Simonis volker.simonis at gmail.com
Fri Dec 21 10:48:32 UTC 2012


Hi Sean,

honestly speaking, I wasn't aware of this problem until now and I just checked that we currently don't use this option, neither internally nor in our port. I found the following nice explanation of the issue: http://www.network-theory.co.uk/docs/gccintro/gccintro_71.html

It seems that you only get problems if your programs relies on the fact that 'char' is either unsigned or signed. I suppose that the current OpenJDK doesn't rely on such assumptions (which is good) because we didn't saw any of them until now.

If I understand you right, you add some closed code the the JDK which has problems because it makes such assumptions. Is that right? If yes, you should probably first fix that code in the way described in the referenced document. Wouldn't that be possible?

Regarding your patch: I suppose you took it against an original JDK and not our port, because in our port we already have the following lines (at least in http://hg.openjdk.java.net/ppc-aix-port/jdk7u//jdk because we haven't started to work on jdk8 until now)

CFLAGS_REQUIRED_arm += -fsigned-char -D_LITTLE_ENDIAN CFLAGS_REQUIRED_ppc += -fsigned-char -D_BIG_ENDIAN CFLAGS_REQUIRED_ppc64 += -m64 LDFLAGS_COMMON_ppc64 += -m64 -L/lib64 -Wl,-melf64ppc

Notice that we don't set '-D_BIG_ENDIAN' because it is the default.

Didn't you observed your problems with jdk7 on Linux/PPC? I think we should patch JDK7 first if this is really necessary.

Regards, Volker

On Fri, Dec 21, 2012 at 10:40 AM, Sean Chou <zhouyx at linux.vnet.ibm.com>wrote:

Hello,

We found -fsigned-char is added to ppc platform, but not added to ppc64 platform. As they are different platforms, I think it is needed for ppc64 as well. Currently I just added one line modification as follow, but there may be more places to modify. If some one can give some comments, I can make a complete webrev. The buggy scenario we found needs closed code to reproduce, so it is not reproduced with current openjdk build on ppc linux from AIX porting project. I tested with ibmjdk, the patch works. I found CFLAGSREQUIREDppc is from changeset http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/54d8193f177b . Is it enough to add ppc64 option for places ppc appears in that patch? ///////////////////////// the patch //////////////////////// diff --git a/make/common/Defs-linux.gmk b/make/common/Defs-linux.gmk --- a/make/common/Defs-linux.gmk +++ b/make/common/Defs-linux.gmk @@ -196,6 +196,7 @@ LDFLAGSCOMMONsparc += -m32 -mcpu=v9 CFLAGSREQUIREDarm += -fsigned-char -DLITTLEENDIAN CFLAGSREQUIREDppc += -fsigned-char -DBIGENDIAN +CFLAGSREQUIREDppc64 += -fsigned-char -DBIGENDIAN ifeq ($(ZEROBUILD), true) CFLAGSREQUIRED = $(ZEROARCHFLAG) ifeq ($(ZEROENDIANNESS), little)

-- Best Regards, Sean Chou



More information about the core-libs-dev mailing list