Bug in GCC
Jarek Pelczar
jarekp3@wp.pl
Fri Feb 7 10:16:00 GMT 2003
I use GCC from DJGPP.
gcc -v dump:
Reading specs from c:/djgpp/lib/gcc-lib/djgpp/3.21/specs
Configured with: /devel/gnu/gcc/3.2/gnu/gcc-3.21/configure i586-pc-msdosdjgpp --prefix=/dev/env/DJDIR --disable-nls
Thread model: single
gcc version 3.2.1
When I try to comiple such program:
/* ------------------------------ CUT ------------------------------ */
#define TASK_MEMORY_START 0x1000000
#define MAX_TASK_MEMORY (512<<12) /* Max 512MB */
static unsigned long TASK_MEMORY_BEGIN,TASK_MEMORY_END;
unsigned long * mem_map;
unsigned long * kernel_pgdir=(unsigned long *)0x70000;
unsigned long * kernel_pgtables;
#define mm_copy_page(dst,src) \
__asm__("cld;rep;movsl"::"S"(src),"D"(dst),"c"(1024))
#define schedule() __asm__("call change_task");
void mm_boot_log(char * str)
{
__asm__("call boot_log"::"S"(str));
}
void mm_panic(char * str)
{
mm_boot_log(str);
for(;;);
}
void mm_memory_avail_scan(void)
{
register int i;
volatile unsigned long * p;
TASK_MEMORY_BEGIN=TASK_MEMORY_START;
p=(volatile unsigned long *)(TASK_MEMORY_BEGIN);
for(i=TASK_MEMORY_BEGIN;i<MAX_TASK_MEMORY;i+=1024,p+=1024)
{
*p=0x1BADB002;
if((*p)!=0x1BADB002) break;
}
TASK_MEMORY_END=i;
}
/* ------------------------------ CUT ------------------------------ */
I call:
gcc test.c -S -o test.s -O2 -fomit-frame-pointer
And I get invalid output file which contains (part of, only for mm_memory_avail_scan())
/* ------------------------------ CUT ------------------------------ */
.globl _mm_memory_avail_scan
_mm_memory_avail_scan:
movl $16777216, _TASK_MEMORY_BEGIN
movl $16777216, _TASK_MEMORY_END
ret
/* ------------------------------ CUT ------------------------------ */
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20030207/1db0c985/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2849 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20030207/1db0c985/attachment.bin>
More information about the Gcc-bugs
mailing list