This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

memcpy called with very large length (gcc 3.0)


To  : bug-gcc@gnu.org
From: saito@densan.co.jp
Title: memcpy called with very large length (gcc 3.0)

Hello. I am H.Saito, from Japan. I use NetBSD, mips3 and ELF.

This sss.c program compiled with gcc-3.0 and gcc-3.0.1 
 can't execute at my system.

struct sss {
        char buf[20];
};

xxx(int x, int y, struct sss s)
{
}

main()
{
        struct sss s0;

        xxx(0, 1, s0);
}

Please reference assembler source sss.s created by gcc-3.0 at appendix.
When gcc passes 3rd argumnt s0 to function xxx(),
 why memcpy is called with negative length -12 that is very large number
 for my system.

	li	$6,-12			# 0xfffffff4
	la	$25,memcpy

Thank you. Good bye.

---execution log----------------------------------------------------
% gcc -o sss sss.c <return>
% sss <return>
Segmentation fault (core dumped)
% 

---compiler log-----------------------------------------------------
% gcc -S sss.c -v <return>
Reading specs from /usr/gcc3.0/lib/gcc-lib/mips64-elf/3.0/specs
Configured with: ../../gcc-3.0/configure --prefix=/usr/gcc3.0 --srcdir=../../gcc-3.0 --host=mips64-elf --target=mips64-elf --with-elf --with-stabs --with-gnu-as --with-gnu-ld
Thread model: single
gcc version 3.0
 /usr/gcc3.0/lib/gcc-lib/mips64-elf/3.0/cc1 -lang-c -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=0 -D__ANSI_COMPAT -DSYSTYPE_BSD -D_SYSTYPE_BSD -D__NetBSD__ -D__ELF__ -D_ABIN32 -D__NO_LEADING_UNDERSCORES__ -D__GP_SUPPORT__ -D__IEEE_BIG_ENDIAN -Ddevos -Dmips -Dunix -DMIPSEB -D_devos -D_mips -D_unix -D_MIPSEB -D__ANSI_COMPAT -D__SYSTYPE_BSD__ -D_SYSTYPE_BSD -D__NetBSD__ -D__ELF__ -D_ABIN32 -D__NO_LEADING_UNDERSCORES__ -D__GP_SUPPORT__ -D__IEEE_BIG_ENDIAN -D__devos__ -D__mips__ -D__unix__ -D__MIPSEB__ -D__devos__ -D__mips__ -D__unix__ -D_MIPSEB -D__SYSTYPE_BSD -D__devos -D__mips -D__unix -D__MIPSEB -D__devos -D__mips -D__unix -Amachine(mips) -Asystem(unix) -Asystem(NetBSD) -Asystem(devos) -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D__LANGUAGE_C -D_LANGUAGE_C -DLANGUAGE_C -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -U__mips -D__mips=3 -D__mips64 -DR4000 -D_R4000 -D__r4kdevos sss.c -mabicalls -G0 -quiet -dumpbase sss.c -version -o sss.s
GNU CPP version 3.0 (cpplib) [AL 1.1, MM 40] BSD Mips
GNU C version 3.0 (mips64-elf)
	compiled by GNU C version 2.95.2 19991024 (release).
ignoring nonexistent directory "/usr/gcc3.0/mips64-elf/include"
ignoring duplicate directory "/usr/gcc3.0/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/gcc3.0/include
 /user2/FreeSoft/locale/libxpg4-3.3/locale
 /usr/kde/include
 /usr/gnome/include
 /usr/local/include/glib-1.2
 /usr/local/include/gtk-1.2
 /usr/local/BerkeleyDB.3.1/include
 /usr/local/include
 /usr/tetex/include
 /usr/X11/include
 /usr/gcc/include
 /usr/include
 /usr/gcc3.0/lib/gcc-lib/mips64-elf/3.0/include
End of search list.

---sss.s------------------------------------------------------------
	.file	1 "sss.c"
	.abicalls
	.text
	.align	2
	.globl	xxx
	.ent	xxx
xxx:
	.frame	$fp,24,$31		# vars= 0, regs= 2/0, args= 0, extra= 8
	.mask	0x50000000,-8
	.fmask	0x00000000,0
	.set	noreorder
	.cpload	$25
	.set	reorder
	subu	$sp,$sp,24
	.cprestore 0
	sd	$fp,16($sp)
	sd	$28,8($sp)
	move	$fp,$sp
	sw	$4,28($fp)
	sw	$5,36($fp)
	move	$sp,$fp
	ld	$fp,16($sp)
	addu	$sp,$sp,24
	j	$31
	.end	xxx
	.align	2
	.globl	main
	.ent	main
main:
	.frame	$fp,128,$31		# vars= 56, regs= 3/0, args= 40, extra= 8
	.mask	0xd0000000,-8
	.fmask	0x00000000,0
	.set	noreorder
	.cpload	$25
	.set	reorder
	subu	$sp,$sp,128
	.cprestore 40
	sd	$31,120($sp)
	sd	$fp,112($sp)
	sd	$28,104($sp)
	move	$fp,$sp
	addu	$2,$sp,16
	ldl	$3,48($fp)
	ldr	$3,55($fp)
	ldl	$4,56($fp)
	ldr	$4,63($fp)
	sdl	$3,0($2)
	sdr	$3,7($2)
	sdl	$4,8($2)
	sdr	$4,15($2)
	addu	$3,$sp,16
	ld	$2,16($sp)
	sd	$2,72($fp)
	ld	$2,24($sp)
	sd	$2,80($fp)
	move	$4,$3
	addu	$5,$fp,48
	li	$6,-12			# 0xfffffff4
	la	$25,memcpy
	jal	$31,$25
	ld	$2,72($fp)
	sd	$2,16($sp)
	ld	$2,80($fp)
	sd	$2,24($sp)
	move	$4,$0
	li	$5,1			# 0x1
	ld	$6,16($sp)
	ld	$7,24($sp)
	la	$25,xxx
	jal	$31,$25
	move	$sp,$fp
	ld	$31,120($sp)
	ld	$fp,112($sp)
	addu	$sp,$sp,128
	j	$31
	.end	main


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]