This is the mail archive of the
newlib@sources.redhat.com
mailing list for the newlib project.
Patch to data size calculation in mips/nullmon.c
- From: Richard Sandiford <rsandifo at redhat dot com>
- To: newlib at sources dot redhat dot com
- Date: 06 Feb 2003 12:30:14 +0000
- Subject: Patch to data size calculation in mips/nullmon.c
nullmon.c declares _ftext and _end as 'extern unsigned char', which
causes gcc to think they're in the small data section when -G is
in effect. This patch changes the declarations and simplifies the
definition of get_mem_info().
Tested on mips64-elf after modifying mips-sim to use -Tnullmon.ld.
OK to install?
Richard
* mips/nullmon.c (_ftext, _end): Adjust declaration.
(get_mem_info): Rework.
Index: mips/nullmon.c
===================================================================
RCS file: /cvs/src/src/libgloss/mips/nullmon.c,v
retrieving revision 1.1
diff -c -d -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.1 nullmon.c
*** mips/nullmon.c 17 Mar 2000 22:48:51 -0000 1.1
--- mips/nullmon.c 6 Feb 2003 12:11:37 -0000
***************
*** 32,39 ****
#if ! defined(BOARD_MEM_SIZE)
#define BOARD_MEM_SIZE 0x100000 /* About a megabyte */
#endif
! extern unsigned char _ftext ; /* Defined in nullmon.ld */
! extern unsigned char _end ; /* Defined in nullmon.ld */
#if defined(FIXME_WARNINGS)
#warning("FIXME: struct s_mem belongs in a header file")
--- 32,39 ----
#if ! defined(BOARD_MEM_SIZE)
#define BOARD_MEM_SIZE 0x100000 /* About a megabyte */
#endif
! extern char _ftext[]; /* Defined in nullmon.ld */
! extern char _end[]; /* Defined in nullmon.ld */
#if defined(FIXME_WARNINGS)
#warning("FIXME: struct s_mem belongs in a header file")
*************** struct s_mem
*** 47,59 ****
void
get_mem_info (mem)
struct s_mem *mem;
! { char * t1, * t2 ;
! unsigned long long tmp ;
! t1 = & _ftext ;
! t2 = & _end ;
! tmp = (unsigned long long) (t2 - t1) ;
! tmp = (unsigned long long) BOARD_MEM_SIZE - tmp ;
! mem->size = tmp ;
}
/* SYSTEM INTERFACE
--- 47,54 ----
void
get_mem_info (mem)
struct s_mem *mem;
! {
! mem->size = BOARD_MEM_SIZE - (_ftext - _end);
}
/* SYSTEM INTERFACE