Thibaud GUERIN writes: > On 4/20/06, Andrew Haley <aph@xxxxxxxxxx> wrote: > > Thibaud GUERIN writes: > > > > > > > > > Not clear in the first message, (and maybe not in this one too..), sorry > > > > > > > > > This asm inline was something like a "test/patch code". > > > > > > I try to have a simple : > > > > > > char **ap = (char **)(&fmt); > > > > I don't think that's legal. (Actually, I'm not perfectly sure it's > > not legal, but I think not.) Also, I have no idea why you're trying > > to do such a thing. > > as i'm compiling with : > -Wall -Werror -nostdinc -Wstrict-aliasing=2 > it will not compile if it wasn't (i think, not sure too...) That is not true. We don't gurantee to generate an error for all invalid source. > > > working, It didn't : > > > ap was equal to &fmt BUT *ap wasn't equal to fmt (don't kown why...) > > > > I'm sure that's impossible. :-) > > it wasn't belive me... and it's driving me crasy since days.... > > > > so i try by my self... to do : > > > > > > ap = &fmt; > > > *ap = fmt; > > > > > > in asm inline.... (dirty i know...) > > > > > > problem is : > > > With this asm code in the binary *s is equal to fmt > > > Without this asm code in the binary *s isn't equal to fmt > > > > > > > > > All the 's' variable stuffs are from my debug... > > > Again : > > > My only aim is to have an 'ap = &fmt' valid (->ap = &fmt AND *ap = fmt) > > > > So why not do the obvious > > > > const char **ap = &fmt ; > > > > ? > > because i need to do some : > ap++; > to get the next args in stack, as my end aim is to do re-write a printf... So why not use va_list? That's what va_list is for. > > > The resulting asm was here to help you to understand wath's wrong .... > > > I'm looking for some days now without answer... > > > > You're still not explaining yourself. You have a const char* arg that > > you are trying to alter, but instead of doing it the obvious way with > > an assignment, you're taking the address of the arg, casting the > > resulting pointer to a different pointer type, and then overwriting > > the arg through the resulting pointer. > > > > What's the point of all this? > > i'm not trying to alter an (const char*) but to get the args in my > stack by getting some pointers on it, as in all va_args fonctions.... Trying to do all this stuff behind the compiler's back is likely to break things. Use va_list. Andrew.