This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: bootstrap/3589: GCC 3.0-CVS illegal instruction on hppa1.1-proelf
Vladimir Makarov wrote:
>
> Joel Sherrill wrote:
> >
> > Vladimir Makarov wrote:
> > >
> > > Joel Sherrill wrote:
> > > >
> > > > Vladimir Makarov wrote:
> > > > >
> > > > > Joel Sherrill wrote:
> > > > > >
> > > > > > Vladimir Makarov wrote:
> > > > > > >
> > > > > > > Joel Sherrill wrote:
> > > > > > > >
> > > > > > > > Vladimir Makarov wrote:
> > > > > > > > >
> > > > > > > > > Joel Sherrill wrote:
> > > > > > > > >
> > > > > > > > > >Is there any ifdef to check and decide which directives to use?
> > > > > > > > > >
> > > > > > > > > > And if there is any reference mapping between them, I would appreciate
> > > > > > > > > > knowing about it.
> > > > > > > > >
> > > > > > > > > Here is the path solving the problem.
> > > > > > > > >
> > > > > > > > > You could find a description of the pseudoops and mapping them into elf
> > > > > > > > > sections in
> > > > > > > > >
> > > > > > > > > http://segfault.net/~scut/cpu/hppa/HP_Assembler_Reference_Manual_HP9000_9th_Ed.pdf
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > > Could the __PRO__ (or something similar) be part of the cpp predefines
> > > > > > > > for this
> > > > > > > > configuration so non-gcc assembly can do the right thing? I know that
> > > > > > > > at least
> > > > > > > > libgloss and RTEMS have hppa assembly.
> > > > > > > >
> > > > > > >
> > > > > > > Yes, we could do it. But it is not urgent now. Libgloss has no
> > > > > > > .subspace directive so it should be compiled without problems.
> > > > > >
> > > > > > OK. There are some in RTEMS but I am happy to disable them. The hppa
> > > > > > port (when really active) was maintained on on an hpux box using gcc
> > > > > > and native as/ld. So getting to the point where it is built using
> > > > >
> > > > > Here the rewritten patch is. __PRO__ is now always defined for
> > > > > hppa1.1-*-pro* and hppa1.1-*-rtems*. Please ignore the previous patch
> > > > > (__PRO__ was used only for libgcc compilation in it).
> > > >
> > > > I hate to say this but hppa1.1-*-rtems* includes config/pa/rtems.h after
> > > > config/pa/pa-pro-end.h so ends up overriding the CPP_PREDEFINES
> > > > settings.
> > > > So -D__PRO__ has to be added to config/pa/rtems.h as well.
> > > >
> > > > It isn't obvious because the include order is from config.gcc but this
> > > > is basically how all of the *-rtems* targets are constructed. We
> > > > baseline
> > > > another similar target and slightly modify it for RTEMS. :)
> > > >
> > > Sorry, I've missed this. rtems.h is really after pa-pro-end.h in
> > > config.gcc for rtems.
> > > I think it is even better because __PRO__ will be defined only for
> > > hppa1.1-*pro*.
> > > hppa1.1-*-rtems* will have __rtems__ (which is already defined in
> > > CPP_PREDEFINES in pa/rtmems.h).
> >
> > > So I'd add only proccessing __rtems__ into lib2funcs.asm to this patch.
> > > Is it ok for you?
> > >
> > > I'd also use __pro__ instead __PRO__ (because __rtems__ use lower
> > > letters). What do you think, Joel.
> >
> > Given the target, I don't really care :) but in general I would prefer
> > that the conditional indicate the assembler to be used independent of
> > the OS or lack thereof.
> >
>
> It is hard to achieve. Of course the used object file format is major.
> So we could define __elfobj__ in pro-end.h and rtems.h. But they are
> connected with elf only config.gcc. Somebody could create
> hppa1.1-*-prosom using pro-end.h. Of course it is stupid because there
> is only proelf.
>
> So I think the following patch is still reasonable.
OK -- fine with me. I feel like I am flogging a dead horse since all
we are doing is mitigating bit rot. :)
Does the target build for you now with c/c++ enabled?
> 2002-03-26 Vladimir Makarov <vmakarov@redhat.com>
>
> * pa/pa-pro-end.h (CPP_PREDEFINES): Add -D__pro__.
>
> * pa/lib2funcs.asm: Don't use .SPACE and .SUBSPACE if __pro__
> or __rtems_ is defined.
>
> Index: pa/lib2funcs.asm
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/config/pa/lib2funcs.asm,v
> retrieving revision 1.6
> diff -u -p -r1.6 lib2funcs.asm
> --- lib2funcs.asm 2001/04/16 18:30:45 1.6
> +++ lib2funcs.asm 2002/03/26 22:13:04
> @@ -28,6 +28,7 @@
> ; the Free Software Foundation, 59 Temple Place - Suite 330,
> ; Boston, MA 02111-1307, USA.
>
> +#if !defined(__pro__) && !defined(__rtems__)
> .SPACE $PRIVATE$
> .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
> .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
> @@ -35,11 +36,14 @@
> .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
> .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
> .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
> -
> +#endif
> .IMPORT $$dyncall,MILLICODE
> +#if !defined(__pro__) && !defined(__rtems__)
> .SPACE $TEXT$
> .SUBSPA $CODE$
> -
> +#else
> + .text
> +#endif
> ; Simply call with the address of the desired import stub in %r22 and
> ; arguments in the normal place (%r26-%r23 and stack slots).
> ;
> Index: pa/pa-pro-end.h
> ===================================================================
> RCS file: /cvs/gcc/gcc/gcc/config/pa/pa-pro-end.h,v
> retrieving revision 1.5
> diff -u -p -r1.5 pa-pro-end.h
> --- pa-pro-end.h 2000/11/02 23:29:12 1.5
> +++ pa-pro-end.h 2002/03/26 22:13:04
> @@ -30,7 +30,7 @@ Boston, MA 02111-1307, USA. */
> #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg:
> -L/lib/libp/ -lc}"
>
> #undef CPP_PREDEFINES
> -#define CPP_PREDEFINES "-Dhppa -DPWB -Acpu=hppa -Amachine=hppa"
> +#define CPP_PREDEFINES "-Dhppa -DPWB -D__pro__ -Acpu=hppa
> -Amachine=hppa"
>
> /* hpux8 and later have C++ compatible include files, so do not
> pretend they are `extern "C"'. */
>
> > I appreciate all the fine-tuning work you are doing. :)
> >
> > > >
> > > > > 2002-03-26 Vladimir Makarov <vmakarov@redhat.com>
> > > > >
> > > > > * pa/pa-pro-end.h (CPP_PREDEFINES): Add -D__PRO__.
> > > > >
> > > > > * pa/lib2funcs.asm: Don't use .SPACE and .SUBSPACE if __PRO__ is
> > > > > defined.
> > > > >
> > > > > Index: pa/lib2funcs.asm
> > > > > ===================================================================
> > > > > RCS file: /cvs/gcc/gcc/gcc/config/pa/lib2funcs.asm,v
> > > > > retrieving revision 1.6
> > > > > diff -c -p -r1.6 lib2funcs.asm
> > > > > *** lib2funcs.asm 2001/04/16 18:30:45 1.6
> > > > > --- lib2funcs.asm 2002/03/26 20:46:35
> > > > > ***************
> > > > > *** 28,33 ****
> > > > > --- 28,34 ----
> > > > > ; the Free Software Foundation, 59 Temple Place - Suite 330,
> > > > > ; Boston, MA 02111-1307, USA.
> > > > >
> > > > > + #ifndef __PRO__
> > > > > .SPACE $PRIVATE$
> > > > > .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
> > > > > .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
> > > > > ***************
> > > > > *** 35,45 ****
> > > > > .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
> > > > > .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
> > > > > .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
> > > > > !
> > > > > .IMPORT $$dyncall,MILLICODE
> > > > > .SPACE $TEXT$
> > > > > .SUBSPA $CODE$
> > > > > !
> > > > > ; Simply call with the address of the desired import stub in %r22 and
> > > > > ; arguments in the normal place (%r26-%r23 and stack slots).
> > > > > ;
> > > > > --- 36,49 ----
> > > > > .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
> > > > > .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
> > > > > .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
> > > > > ! #endif
> > > > > .IMPORT $$dyncall,MILLICODE
> > > > > + #ifndef __PRO__
> > > > > .SPACE $TEXT$
> > > > > .SUBSPA $CODE$
> > > > > ! #else
> > > > > ! .text
> > > > > ! #endif
> > > > > ; Simply call with the address of the desired import stub in %r22 and
> > > > > ; arguments in the normal place (%r26-%r23 and stack slots).
> > > > > ;
> > > > > Index: pa/pa-pro-end.h
> > > > > ===================================================================
> > > > > RCS file: /cvs/gcc/gcc/gcc/config/pa/pa-pro-end.h,v
> > > > > retrieving revision 1.5
> > > > > diff -c -p -r1.5 pa-pro-end.h
> > > > > *** pa-pro-end.h 2000/11/02 23:29:12 1.5
> > > > > --- pa-pro-end.h 2002/03/26 20:46:35
> > > > > *************** Boston, MA 02111-1307, USA. */
> > > > > *** 30,36 ****
> > > > > #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg:
> > > > > -L/lib/libp/ -lc}"
> > > > >
> > > > > #undef CPP_PREDEFINES
> > > > > ! #define CPP_PREDEFINES "-Dhppa -DPWB -Acpu=hppa -Amachine=hppa"
> > > > >
> > > > > /* hpux8 and later have C++ compatible include files, so do not
> > > > > pretend they are `extern "C"'. */
> > > > > --- 30,36 ----
> > > > > #define LIB_SPEC "%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg:
> > > > > -L/lib/libp/ -lc}"
> > > > >
> > > > > #undef CPP_PREDEFINES
> > > > > ! #define CPP_PREDEFINES "-Dhppa -DPWB -D__PRO__ -Acpu=hppa
> > > > > -Amachine=hppa"
> > > > >
> > > > > /* hpux8 and later have C++ compatible include files, so do not
> > > > > pretend they are `extern "C"'. */
> > > >
> > > > --
> > > > Joel Sherrill, Ph.D. Director of Research & Development
> > > > joel@OARcorp.com On-Line Applications Research
> > > > Ask me about RTEMS: a free RTOS Huntsville AL 35805
> > > > Support Available (256) 722-9985
> >
> > --
> > Joel Sherrill, Ph.D. Director of Research & Development
> > joel@OARcorp.com On-Line Applications Research
> > Ask me about RTEMS: a free RTOS Huntsville AL 35805
> > Support Available (256) 722-9985
--
Joel Sherrill, Ph.D. Director of Research & Development
joel@OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985