This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 3.4 PATCH: Consistently use _ABIO32 for _MIPS_SIM


Making a clean break with tradition, I am going to start right hear at the top of this message!

Building mipsel-linux targets has now been broken for quite a while. We should either apply this, or backout the changes that made it necessary.

As things stand now no further patches for mipsel-linux can be contemplated as building and testing are impossible.

David Daney.


Rainer Orth wrote:


Alexandre Oliva writes:

sorry for the late reply: start of term is taking most of my time.



On Oct 9, 2003, Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> wrote:



* config/mips/{iris6.h, linux.h} used to define _MIPS_SIM for the O32 ABI
in terms of another macro not defined by gcc itself (or SGI's MIPSpro C,
for that matter), namely _MIPS_SIM_ABI32.


My understanding is that this made things backward-compatible. Even
if your sgidefs.h doesn't define _MIPS_SIM_ABI32 (because it pre-dates
the existence of multiple ABIs), they will still compare equal. If



But do any such systems exist and do we still care for them? Even IRIX 5.3 (which is quite ancient by todays standards) defines _MIPS_SIM in terms of _ABIO32 and has _MIPS_SIM_ABI32=1 in <sgidefs.h>.



your code is written with multiple ABIs in mind, it's entitled to
require _MIPS_SIM to be defined to non-zero, after including
<sgidefs.h>.

If your proposal still guarantees this set of assumptions, I don't
have any problem with it.



I'm not sure i really get what you mean: consider this input:


#if _MIPS_SIM == _MIPS_SIM_ABI32
O32 with "_MIPS_SIM_ABI32"
#endif

#if _MIPS_SIM == _ABIO32
O32 with "_ABIO32"
#endif

Right now, with -D_MIPS_SIM=_MIPS_SIM_ABI32 only (i.e. _MIPS_SIM_ABI32 and
_ABIO32 undefined), you get

O32 with "_MIPS_SIM_ABI32"
O32 with "_ABIO32"

because both undefined macros evaluate to 0.

With my proposed patch (-D_MIPS_SIM=_ABIO32 -D_ABIO32=1) and without
<sgidefs.h> (i.e. _MIPS_SIM_ABI32 undefined), you get

O32 with "_ABIO32"

But it is simply wrong to use _MIPS_SIM without <sgidefs.h>, so you get
what you deserve ;-(

With my proposed patch and <sgidefs.h> (i.e. _MIPS_SIM_ABI32 defined), you
get again

O32 with "_MIPS_SIM_ABI32"
O32 with "_ABIO32"

Rainer





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]