[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#448480: marked as done (GCC miscompilation on ARM)



Your message dated Wed, 23 Jan 2008 18:48:39 +0100
with message-id <18327.32247.406977.529526@gargle.gargle.HOWL>
and subject line Bug#448480: I've just realised that ...
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: gcc
Version: 4:4.1.1-15

GCC miscompiles the following code :-

extern void extfunc(void);
extern unsigned extvar;

static void inner(char *a, unsigned b)
{
	if (b)
		extfunc();
	else
		extvar = (unsigned) a;
}

void outer(unsigned a, unsigned b)
{
	char c;

	c = a;

	inner(&c, b);
}

/*
 * with Debian Etch gcc
 *
 * gcc -O2 -c -o test.o test.c
 *
 * objdump -d test.o
 *
 * the initialisation of "c" that is needed
 * for the assignment to "extvar" is done
 * in the wrong leg of the if() !!
 *

test.o:     file format elf32-littlearm

Disassembly of section .text:

00000000 <outer>:
   0:	e52de004 	str	lr, [sp, #-4]!
   4:	e3510000 	cmp	r1, #0	; 0x0
   8:	e24dd004 	sub	sp, sp, #4	; 0x4
   c:	059f301c 	ldreq	r3, [pc, #28]	; 30 <.text+0x30>
  10:	028d2003 	addeq	r2, sp, #3	; 0x3
  14:	05832000 	streq	r2, [r3]
  18:	1a000001 	bne	24 <outer+0x24>
  1c:	e28dd004 	add	sp, sp, #4	; 0x4
  20:	e8bd8000 	ldmia	sp!, {pc}
  24:	e5cd0003 	strb	r0, [sp, #3]
  28:	ebfffffe 	bl	0 <extfunc>
  2c:	eafffffa 	b	1c <outer+0x1c>
  30:	00000000 	andeq	r0, r0, r0

*/

/*

Using built-in specs.
Target: arm-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release arm-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

*/

/*
 * same but with Debian Etch gcc-3.4
 *
 * this one is correct
 *

test.o:     file format elf32-littlearm

Disassembly of section .text:

00000000 <outer>:
   0:	e52de004 	str	lr, [sp, #-4]!
   4:	e3510000 	cmp	r1, #0	; 0x0
   8:	059f3020 	ldreq	r3, [pc, #32]	; 30 <.text+0x30>
   c:	e24dd004 	sub	sp, sp, #4	; 0x4
  10:	e28d2004 	add	r2, sp, #4	; 0x4
  14:	e5620001 	strb	r0, [r2, #-1]!
  18:	05832000 	streq	r2, [r3]
  1c:	1a000001 	bne	28 <outer+0x28>
  20:	e28dd004 	add	sp, sp, #4	; 0x4
  24:	e8bd8000 	ldmia	sp!, {pc}
  28:	ebfffffe 	bl	0 <extfunc>
  2c:	eafffffb 	b	20 <outer+0x20>
  30:	00000000 	andeq	r0, r0, r0

*/




--- End Message ---
--- Begin Message ---
closed by upstream as invalid.


--- End Message ---

Reply to: