Re: [PATCH] Fix immediate asm constraint for gcc 3 x86_64
- From: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxx>
- Date: Wed, 21 May 2008 09:31:22 -0400
* H. Peter Anvin (hpa@xxxxxxxxx) wrote:
Mathieu Desnoyers wrote:
It seems that include/asm-x86/immediate.h in sched-devel.git causes
this. gcc-3.4 does not seem to like the "i" (&name##__imv) constraint. I
have seen no such problem with gcc-4.1. This is weird. It seems that
relaxing the constraint helps fixing this, but it's not clear whether
fixing the code or gcc-3.4 is the correct solution... here is the fix :
Fix immediate asm constraint for gcc 3 x86_64
It might make it compile, but it's completely *wrong* for the purpose
intended.
It permits gcc to present the address in a register, for example, so there
is no guarantee that you end up with an immediate.
-hpa
Hrm, you are right. Let's see a simple toy case which generates the
problem :
struct test_struct {
int a;
int b;
int c;
};
static struct test_struct testa;
int main()
{
asm (
".quad %c0\n\t"
:
: "i" (&testa.c));
return 0;
}
gcc 4.1 generates : .quad testa+8
and doesn't complain. However, gcc-3.4 stops with :
compudj@amd64:~/test$ gcc-3.4 -S -o oldgcc.S oldgcc.c
oldgcc.c: In function `main':
oldgcc.c:11: warning: asm operand 0 probably doesn't match constraints
oldgcc.c:11: error: impossible constraint in `asm'
It's understandable given that changing the "i" for a "g" constraint
changes the assembly result for :
movl $testa, %eax
addq $8, %rax
#APP
.quad %rax
#NO_APP
Is there any way we could get a symbol assigned to &testa.c to make gcc
3 happy ?
Mathieu
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
- References:
- x86-64 build problem with tip
- From: Jeremy Fitzhardinge
- [PATCH] Fix immediate asm constraint for gcc 3 x86_64
- From: Mathieu Desnoyers
- Re: [PATCH] Fix immediate asm constraint for gcc 3 x86_64
- From: H. Peter Anvin
- x86-64 build problem with tip
- Prev by Date: [PATCH] [SPI/MMC] mmc_spi.h should include linux/interrupts.h
- Next by Date: Re: [PATCH] USB: fix deadlock in HCD code
- Previous by thread: Re: [PATCH] Fix immediate asm constraint for gcc 3 x86_64
- Next by thread: [PATCH] Fix Immediate Values x86_64 support old gcc
- Index(es):
Relevant Pages
|