Bug 57427
Summary: | ARM redboot_linux_exec should be changed to avoid miscompilation | ||
---|---|---|---|
Product: | [Retired] eCos | Reporter: | Jonathan Larmour <jlarmour> |
Component: | HAL | Assignee: | Jesper Skov <jskov> |
Status: | CLOSED WONTFIX | QA Contact: | Nick Garnett <nickg> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | CVS | CC: | gthomas, hmt, jlarmour, jskov |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | other | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2003-06-20 16:08:17 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Jonathan Larmour
2001-12-12 08:08:02 UTC
Unfortunately, this doesn't work for the other cases where we use &&, such as in the GDB locking macros. This is a grep for &&[^ \t] where I've pruned out false hits: ./devs/flash/arm/mahwah/current/src/flash_query.c:87: __mem_fault_handler = &&no_device; ./hal/arm/arch/current/include/arm_stub.h:129: cyg_hal_gdb_place_break((target_register_t)((unsigned long)&&cyg_hal_gdb_break_place + 1));\ ./hal/arm/arch/current/include/arm_stub.h:137: cyg_hal_gdb_place_break((target_register_t)&&cyg_hal_gdb_break_place ); \ ./hal/arm/arch/current/include/arm_stub.h:146: cyg_hal_gdb_remove_break( (target_register_t)&&cyg_hal_gdb_break_place ); \ ./hal/arm/arm9/excalibur/current/src/redboot_linux_exec.c:307: ip = (unsigned long *)&&lab1; ./hal/arm/arm9/excalibur/current/src/redboot_linux_exec.c:312: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/arm/arm9/aaed2000/current/src/redboot_linux_exec.c:305: ip = (unsigned long *)&&lab1; ./hal/arm/arm9/aaed2000/current/src/redboot_linux_exec.c:310: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/arm/ebsa285/current/src/redboot_cmds.c:132: ip = (unsigned long *)&&lab1; ./hal/arm/ebsa285/current/src/redboot_cmds.c:134: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/arm/sa110/mahwah/current/src/redboot_cmds.c:132: ip = (unsigned long *)&&lab1; ./hal/arm/sa110/mahwah/current/src/redboot_cmds.c:134: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/arm/sa110/var/current/src/redboot_cmds.c:89: ip = (unsigned long *)&&lab1; ./hal/arm/sa110/var/current/src/redboot_cmds.c:90: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/arm/sa11x0/var/current/src/redboot_linux_exec.c:302: ip = (unsigned long *)&&lab1; ./hal/arm/sa11x0/var/current/src/redboot_linux_exec.c:307: for (i = 0; i < (unsigned long)&&end1-(unsigned long)&&lab1; i++) { ./hal/common/current/include/hal_stub.h:229: cyg_hal_gdb_place_break( (target_register_t)&&cyg_hal_gdb_break_place ); \ ./hal/common/current/include/hal_stub.h:237: cyg_hal_gdb_remove_break( (target_register_t)&&cyg_hal_gdb_break_place ); \ ./hal/common/current/src/hal_misc.c:64: (_x_) = (CYG_ADDRWORD)&&__backup_return_address ./hal/common/current/src/hal_stub.c:766: __mem_fault_handler = &&err; ./hal/common/current/src/hal_stub.c:847: __mem_fault_handler = &&err; ./hal/common/current/src/hal_stub.c:901: __mem_fault_handler = &&err; ./hal/i386/arch/current/src/i386_stub.c:280: __mem_fault_handler = &&err; ./hal/i386/arch/current/src/i386_stub.c:306: __mem_fault_handler = &&err; ./hal/frv/arch/current/include/frv_stub.h:135: cyg_hal_gdb_place_break((target_register_t)&&cyg_hal_gdb_break_place ); \ ./kernel/current/tests/kcache2.c:645: *start = (unsigned long) &&label_start; ./kernel/current/tests/kcache2.c:646: *end = (unsigned long) &&label_end; This has nothing to do with me! Jesper was the one who "owned" this.... This bug has moved to http://bugs.ecos.sourceware.org/show_bug.cgi?id=57427 |