All of lore.kernel.org
 help / color / mirror / Atom feed
* [kvm-ppc-devel] The default for char Literals differ in signedness
@ 2008-01-11 13:14 Christian Ehrhardt
  2008-01-11 15:04 ` [kvm-ppc-devel] The default for char Literals differ Hollis Blanchard
  0 siblings, 1 reply; 5+ messages in thread
From: Christian Ehrhardt @ 2008-01-11 13:14 UTC (permalink / raw)
  To: kvm-ppc

Hi,
maybe its an issue of my build environment only, but when I compile kvm-userspace for our platform I see a lot of warnings like that in the qemu code:

    warning: pointer targets in passing argument 3 of 'PPC_NVRAM_set_params' differ in signedness

The reason is that some code defines function prototypes and variables with the type "const unsigned char*" and then assigns a literal like "PPC" to it. But per default our platform seems to have "const signed char*" for literals and so we get a lot of annoying warnings. E.g. nearly every line in qemu/target-ppc/translate.c.

Should we do anything to prevent these Warnings or do you even see those ?
We could search for compiler options like -fsigned-string/-funsigned-string (did not help here in a quick test) or patch qemu code to our signedness, but this would need extensive tests to prevent that we fix it for us and create the same warning for others.
The gcc developers here said a literal is defined as "array of char" which obviously can be cast implicitly to "const char*" and the platform decides if it is signed or unsigned - at least most library functions solve this by using "const char*" without signedness. That way the compilation should work for everyone because the variables/prototypes are automatically mapped to the platform defined signedness as the literals are too.

The questions for our project are:
- do we need that fixed?
- is it our job to fix that?
- Which approach should we go (maybe I missed some possible solutions)?

Whats your opinion on that?

-- 

Grüsse / regards, 
Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel

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

* Re: [kvm-ppc-devel] The default for char Literals differ
@ 2008-01-11 15:04 ` Hollis Blanchard
  2008-01-11 16:16   ` [kvm-ppc-devel] The default for char Literals differ in Jimi Xenidis
  0 siblings, 1 reply; 5+ messages in thread
From: Hollis Blanchard @ 2008-01-11 15:04 UTC (permalink / raw)
  To: kvm-ppc

On Fri, 2008-01-11 at 14:14 +0100, Christian Ehrhardt wrote:
> Hi,
> maybe its an issue of my build environment only, but when I compile
> kvm-userspace for our platform I see a lot of warnings like that in
> the qemu code:
> 
>     warning: pointer targets in passing argument 3 of
> 'PPC_NVRAM_set_params' differ in signedness
> 
> The reason is that some code defines function prototypes and variables
> with the type "const unsigned char*" and then assigns a literal like
> "PPC" to it. But per default our platform seems to have "const signed
> char*" for literals and so we get a lot of annoying warnings. E.g.
> nearly every line in qemu/target-ppc/translate.c.
> 
> Should we do anything to prevent these Warnings or do you even see
> those ?

That warning only appears in recent versions of gcc. In fact I believe
there are 3 different types: char *, unsigned char *, and signed char *,
and implicitly casting between them generates the warnings. :(

> We could search for compiler options like
> -fsigned-string/-funsigned-string (did not help here in a quick test)
> or patch qemu code to our signedness, but this would need extensive
> tests to prevent that we fix it for us and create the same warning for
> others.
> The gcc developers here said a literal is defined as "array of char"
> which obviously can be cast implicitly to "const char*" and the
> platform decides if it is signed or unsigned - at least most library
> functions solve this by using "const char*" without signedness. That
> way the compilation should work for everyone because the
> variables/prototypes are automatically mapped to the platform defined
> signedness as the literals are too.
> 
> The questions for our project are:
> - do we need that fixed?
> - is it our job to fix that?
> - Which approach should we go (maybe I missed some possible
> solutions)?

It's a qemu issue. If you want to fix it, you should bring it up on
qemu-devel and see what they think about it.

-- 
Hollis Blanchard
IBM Linux Technology Center


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel

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

* Re: [kvm-ppc-devel] The default for char Literals differ in
@ 2008-01-11 16:16   ` Jimi Xenidis
  2008-01-16 12:29     ` [Qemu-devel] Re: [kvm-ppc-devel] The default for char Literals differ in signedness between platforms causing us a lot of warnings Christian Ehrhardt
  0 siblings, 1 reply; 5+ messages in thread
From: Jimi Xenidis @ 2008-01-11 16:16 UTC (permalink / raw)
  To: kvm-ppc


On Jan 11, 2008, at 10:04 AM, Hollis Blanchard wrote:

> On Fri, 2008-01-11 at 14:14 +0100, Christian Ehrhardt wrote:
>> Hi,
>> maybe its an issue of my build environment only, but when I compile
>> kvm-userspace for our platform I see a lot of warnings like that in
>> the qemu code:
>>
>>     warning: pointer targets in passing argument 3 of
>> 'PPC_NVRAM_set_params' differ in signedness
>>
>> The reason is that some code defines function prototypes and  
>> variables
>> with the type "const unsigned char*" and then assigns a literal like
>> "PPC" to it. But per default our platform seems to have "const signed
>> char*" for literals and so we get a lot of annoying warnings. E.g.
>> nearly every line in qemu/target-ppc/translate.c.
>>
>> Should we do anything to prevent these Warnings or do you even see
>> those ?
>
> That warning only appears in recent versions of gcc. In fact I believe
> there are 3 different types: char *, unsigned char *, and signed  
> char *,
> and implicitly casting between them generates the warnings. :(
>
>> We could search for compiler options like
>> -fsigned-string/-funsigned-string (did not help here in a quick test)
>> or patch qemu code to our signedness, but this would need extensive
>> tests to prevent that we fix it for us and create the same warning  
>> for
>> others.
>> The gcc developers here said a literal is defined as "array of char"
>> which obviously can be cast implicitly to "const char*" and the
>> platform decides if it is signed or unsigned - at least most library
>> functions solve this by using "const char*" without signedness. That
>> way the compilation should work for everyone because the
>> variables/prototypes are automatically mapped to the platform defined
>> signedness as the literals are too.
>>
>> The questions for our project are:
>> - do we need that fixed?
>> - is it our job to fix that?
>> - Which approach should we go (maybe I missed some possible
>> solutions)?
>
> It's a qemu issue. If you want to fix it, you should bring it up on
> qemu-devel and see what they think about it.

this is what:
# disable pointer signed / unsigned warnings in gcc 4.0
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)

In linux/Makefile is for.
-JX



-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
kvm-ppc-devel mailing list
kvm-ppc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-ppc-devel

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

* [Qemu-devel] Re: [kvm-ppc-devel] The default for char Literals differ in signedness between platforms causing us a lot of warnings
  2008-01-11 16:16   ` [kvm-ppc-devel] The default for char Literals differ in Jimi Xenidis
@ 2008-01-16 12:29     ` Christian Ehrhardt
  2008-01-16 12:59       ` Andre Przywara
  0 siblings, 1 reply; 5+ messages in thread
From: Christian Ehrhardt @ 2008-01-16 12:29 UTC (permalink / raw)
  To: qemu-devel

Hi,
the following discussion is from kvm-ppc-devel, but it is actually an qemu discussion so I move th topic to qemu-devel.
The original thread is cited in the mail below, in short the issue is the following:

Newer gcc versions generate warnings about implicit casts between different signed pointers.
That hits a lot of qemu code at least what I saw it compiling for ppc or x86.
So my question is, is there already a preferred qemu approach to get rid of these warnings
either the -Wno-pointer-sign solution like in the kernel or something else (I did not find
anything like that in the latest cvs snapshot or on this list)?

--- thread from kvm-ppc-devel ---

Jimi Xenidis wrote:
> 
> On Jan 11, 2008, at 10:04 AM, Hollis Blanchard wrote:
> 
>> On Fri, 2008-01-11 at 14:14 +0100, Christian Ehrhardt wrote:
>>> Hi,
>>> maybe its an issue of my build environment only, but when I compile
>>> kvm-userspace for our platform I see a lot of warnings like that in
>>> the qemu code:
>>>
>>>     warning: pointer targets in passing argument 3 of
>>> 'PPC_NVRAM_set_params' differ in signedness
>>>
>>> The reason is that some code defines function prototypes and variables
>>> with the type "const unsigned char*" and then assigns a literal like
>>> "PPC" to it. But per default our platform seems to have "const signed
>>> char*" for literals and so we get a lot of annoying warnings. E.g.
>>> nearly every line in qemu/target-ppc/translate.c.
>>>
>>> Should we do anything to prevent these Warnings or do you even see
>>> those ?
>>
>> That warning only appears in recent versions of gcc. In fact I believe
>> there are 3 different types: char *, unsigned char *, and signed char *,
>> and implicitly casting between them generates the warnings. :(
>>
>>>[...]
>>
>> It's a qemu issue. If you want to fix it, you should bring it up on
>> qemu-devel and see what they think about it.
> 
> this is what:
> # disable pointer signed / unsigned warnings in gcc 4.0
> KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
> 
> In linux/Makefile is for.
> -JX

-- 

Grüsse / regards, 
Christian Ehrhardt
IBM Linux Technology Center, Open Virtualization

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

* Re: [Qemu-devel] Re: [kvm-ppc-devel] The default for char Literals differ in signedness between platforms causing us a lot of warnings
  2008-01-16 12:29     ` [Qemu-devel] Re: [kvm-ppc-devel] The default for char Literals differ in signedness between platforms causing us a lot of warnings Christian Ehrhardt
@ 2008-01-16 12:59       ` Andre Przywara
  0 siblings, 0 replies; 5+ messages in thread
From: Andre Przywara @ 2008-01-16 12:59 UTC (permalink / raw)
  To: ehrhardt; +Cc: qemu-devel

Christian,

 > Newer gcc versions generate warnings about implicit casts between
 > different signed pointers.
 > That hits a lot of qemu code at least what I saw it compiling for ppc
 > or x86.
 > So my question is, is there already a preferred qemu approach to get
 > rid of these warnings
 > either the -Wno-pointer-sign solution like in the kernel or something
 > else (I did not find
 > anything like that in the latest cvs snapshot or on this list)?

I fixed some of these issues in qemu at least for x86[1][2], those were 
commited mid of December[3] . I ported these over to Xen and posted it 
there[4]. I don't know what's the ultimate policy regarding these 
problems, my solution is:
1. Change the type whenever possible.
2. Introduce casts if 1. is not applicable or would introduce more 
back-castings.

Regards,
Andre.

[1] QEMU first proposal (all in one file) with comments:
http://lists.gnu.org/archive/html/qemu-devel/2007-11/msg00827.html
[2] QEMU reworked version (splitted up to address multiple issues)
http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00146.html
[3] QEMU commits:
http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00417.html
http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00420.html
http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00448.html
http://lists.gnu.org/archive/html/qemu-devel/2007-12/msg00452.html
[4] Xen devel post 
http://lists.xensource.com/archives/html/xen-devel/2008-01/msg00185.html

-- 
Andre Przywara
AMD-Operating System Research Center (OSRC), Dresden, Germany
Tel: +49 351 277-84917
----to satisfy European Law for business letters:
AMD Saxony Limited Liability Company & Co. KG,
Wilschdorfer Landstr. 101, 01109 Dresden, Germany
Register Court Dresden: HRA 4896, General Partner authorized
to represent: AMD Saxony LLC (Wilmington, Delaware, US)
General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy

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

end of thread, other threads:[~2008-01-16 13:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-11 13:14 [kvm-ppc-devel] The default for char Literals differ in signedness Christian Ehrhardt
2008-01-11 15:04 ` [kvm-ppc-devel] The default for char Literals differ Hollis Blanchard
2008-01-11 16:16   ` [kvm-ppc-devel] The default for char Literals differ in Jimi Xenidis
2008-01-16 12:29     ` [Qemu-devel] Re: [kvm-ppc-devel] The default for char Literals differ in signedness between platforms causing us a lot of warnings Christian Ehrhardt
2008-01-16 12:59       ` Andre Przywara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.