The problem with stabs and sign extension

Daniel Jacobowitz
2001-08-08T14:11:00Z

The problem seems, to my inexperienced eye, to be in stabsread.c:

#define INTERNALIZE_SYMBOL(intern, extern, abfd) \
{ \
(intern).n_type = bfd_h_get_8 (abfd, (extern)->e_type); \
(intern).n_strx = bfd_h_get_32 (abfd, (extern)->e_strx); \
(intern).n_desc = bfd_h_get_16 (abfd, (extern)->e_desc); \
(intern).n_value = bfd_h_get_32 (abfd, (extern)->e_value); \
}

n_value is a CORE_ADDR. bfd_h_get_32 returns a bfd_vma, without doing sign
extension. For MIPS, we want sign extension to have happened here. Right?
It does if we're reading mdebug in (because ECOFF_SIGNED_32 is defined in
BFD).

On the other hand, I'm sure other targets don't want sign extension here.
How should we handle this?

--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer