|
Message
From: Matjaz Breskvar<phoenix@o...>
Date: Mon Jan 26 06:04:46 CET 2004
Subject: [openrisc] gcc-3.2.3 bugs after merge
Hi all!After commiting Scott's linker bugfix i've tried various compiler/binutils combinations. The linker fix works great with any compiler. I'd like to thank especialy Scott and also others for all the effort.
Trying the following compilers with linux and binutils with Scott's fix gives:
| long long bug | linux 2.4.20 | ----------------+---------------+-------------------------------+- OC gcc-3.1 | present | compiles, runs OK | OC gcc-3.2.3 | present | compiles, runs OK | OC+UC gcc-3.2.3 | ? | doesn't compile | UC gcc-3.4 | not present | compiles, didn't run it yet | ----------------------------------------------------------------+
| ecos 2.0 + Scott's updates | ----------------+---------------+-------------------------------+ OC gcc-3.1 | crash when compiling, twothreads problem | OC gcc-3.2.3 | compiles OK, twothreads problem (?) | OC+UC gcc-3.2.3 | compiles OK, twothreads problem | UC gcc-3.4 | ? | ----------------------------------------------------------------+
OC gcc-3.2.3 is gcc-3.2.3 in opencores cvs dating before Heiko's merge (i took version from 25. 5. 2003, but i don't think there were other changes then Heiko's merge and elf/rtems target separation_
OC+UC gcc-3.2.3 is latest revision from opencores cvs with UC's stuff merged. it dies while compiling, details bellow.
about ecos i'm not sure why i get the twothreads problem and Scott doesn't. more about it in:
http://www.opencores.org/forums/openrisc/2004/01/000138
it would be great to hear if anybody has any idea where the problem is...
since it takes a lot of time to build whole toolchain, linux and ecos i didn't yet try everything, but i intend to post more about all this when i have some more time.
----
OC+UC gcc-3.2.3 crash while building linux:
The linux version is not exacly the same as in opencores cvs (i've made quite some enhancments but serail.c stayed unchanges for some time now) If someone would like to look into this i can provide the script (with all the packages sources it's ~110 Mb) that builds the toolchain and then tries with linux.
random.c: In function extract_entropy': random.c:1317: warning: passing arg 1 of signal_pending' discards qualifiers from pointer target type random.c: In function random_read': random.c:1498: warning: initialization discards qualifiers from pointer target type random.c:1518: warning: passing arg 1 of signal_pending' discards qualifiers from pointer target type or32-uclinux-gcc -D__KERNEL__ -I/center/opencores/toolchains/oc-2.31/p_root/linux-2.4/include -Wall -Wstr ict-prototypes -Werror-implicit-function-declaration -fno-strict-aliasing -O -nostdlib -fomit-frame-point er -I/center/opencores/toolchains/oc-2.31/p_root/linux-2.4/arch/or32 -fsigned-char -msoft-float -pipe -ff ixed-r2 -Wno-uninitialized -D__linux__ -nostdinc -iwithprefix include -DKBUILD_BASENAME=serial -DEXPORT _SYMTAB -c serial.c serial.c: In function rs_ioctl': serial.c:2646: warning: passing arg 1 of signal_pending' discards qualifiers from pointer target type serial.c: In function rs_wait_until_sent': serial.c:2921: warning: passing arg 1 of signal_pending' discards qualifiers from pointer target type serial.c: In function block_til_ready': serial.c:2963: warning: initialization discards qualifiers from pointer target type serial.c:3070: warning: passing arg 1 of signal_pending' discards qualifiers from pointer target type serial.c: In function early_serial_setup': serial.c:5577: internal error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make[3]: *** [serial.o] Error 1 make[3]: Leaving directory /center/opencores/toolchains/oc-2.31/p_root/linux-2.4/drivers/char' make[2]: *** [first_rule] Error 2 make[2]: Leaving directory /center/opencores/toolchains/oc-2.31/p_root/linux-2.4/drivers/char' make[1]: *** [_subdir_char] Error 2 make[1]: Leaving directory /center/opencores/toolchains/oc-2.31/p_root/linux-2.4/drivers' make: *** [_dir_drivers] Error 2
int __init early_serial_setup(struct serial_struct *req) { int i = req->line;
if (i >= NR_IRQS)
return(-ENOENT);
rs_table[i].magic = 0;
rs_table[i].baud_base = req->baud_base;
rs_table[i].port = req->port;
if (HIGH_BITS_OFFSET)
rs_table[i].port += (unsigned long) req->port_high <<
HIGH_BITS_OFFSET;
rs_table[i].irq = req->irq;
rs_table[i].flags = req->flags;
rs_table[i].close_delay = req->close_delay;
rs_table[i].io_type = req->io_type;
rs_table[i].hub6 = req->hub6;
rs_table[i].iomem_base = req->iomem_base;
rs_table[i].iomem_reg_shift = req->iomem_reg_shift;
rs_table[i].type = req->type;
rs_table[i].xmit_fifo_size = req->xmit_fifo_size;
rs_table[i].custom_divisor = req->custom_divisor;
rs_table[i].closing_wait = req->closing_wait;
return(0);
} <--- line 5577
best regards,
p.
|
 |