Patch to data size calculation in mips/nullmon.c

Richard Sandiford rsandifo@redhat.com
Thu Feb 6 12:29:00 GMT 2003


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



More information about the Newlib mailing list