[parisc-linux] crti.S Nested procedures error

Grant Grundler grundler@cup.hp.com
Mon, 1 May 2000 11:41:00 -0700 (PDT)


Sammy,

I tried the "glibc" recipe on my x86 box (running Debian potato release).
(http://puffin.external.hp.com/mailing-lists/parisc-linux/2000/04-Apr/0059.html)

"make" died with the following error:

...
hppa1.1-linux-gcc /linux/grundler/glibc/hppa1.1-linux/csu/crti.S -c  -I../include -I. -I/linux/grundler/glibc/hppa1.1-linux/csu -I.. -I../libio  -I/linux/grundler/glibc/hppa1.1-linux -I../sysdeps/hppa/elf -I../sysdeps/unix/sysv/linux/hppa -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/hppa/hppa1.1 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/ldbl-128 -I../sysdeps/hppa/fpu -I../sysdeps/hppa -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic  -nostdinc -isystem /opt/puffin/lib/gcc-lib/hppa1.1-linux/2.9-hppa-991112/include -isystem /opt/puffin/include  -include ../include/libc-symbols.h     -DHAVE_INITFINI -DASSEMBLER  -I/linux/grundler/glibc/hppa1.1-linux/csu/.  -g0  -o /linux/grundler/glibc/hppa1.1-linux/csu/crti.o

bc-symbols.h     -DHAVE_INITFINI -DASSEMBLER  -I/linux/grundler/glibc/hppa1.1-linux/csu/.  -g0  -o /linux/grundler/glibc/hppa1.1-linux/csu/crti.o
/linux/grundler/glibc/hppa1.1-linux/csu/crti.S: Assembler messages:
/linux/grundler/glibc/hppa1.1-linux/csu/crti.S:42: Fatal error: Nested procedures
make[2]: *** [/linux/grundler/glibc/hppa1.1-linux/csu/crti.o] Error 1
make[2]: Leaving directory `/linux/grundler/glibc/csu'
make[1]: *** [csu/subdir_lib] Error 2


Sure enough, two .PROC's have no .PROCEND in between.
glibc/csu/Makefile builds crti.S with:

$(objpfx)crti.S: $(objpfx)initfini.s
        sed -n -e '1,/@HEADER_ENDS/p' \
               -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
               -e '/@TRAILER_BEGINS/,$$p' $< > $@ 


It seems either the initfini.s contents are wrong or the "sed" hack
above is removing too much.  Which is it?
Or should there only be one .PROC?

We get two .PROC's because initfini.s has both @_init_PROLOG_BEGINS/ENDS
and @_fini_PROLOG_BEGINS/ENDS. 

Appended "diff -u initfini.s crti.S" shows what sed is doing.

thanks,
grant


grundler <576>diff -u initfini.s crti.S
--- initfini.s  Mon May  1 11:09:43 2000
+++ crti.S      Mon May  1 11:20:48 2000
@@ -6,38 +6,6 @@
 #include "defs.h"
 
 /*@HEADER_ENDS*/
-
-/*@TESTS_BEGIN*/
-#NO_APP
-       .text
-       .align 4
-.globl dummy
-       .EXPORT dummy,ENTRY
-       .type    dummy,@function
-dummy:
-dummy:
-       .PROC
-       .CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3
-       .ENTRY
-       stw %r2,-20(%r30)
-       ldo 64(%r30),%r30
-       stw %r19,-32(%r30)
-       stw %r4,-64(%r30)
-       movb,= %r26,%r22,.L16
-       copy %r19,%r4
-       .CALL   ARGW0=GR
-       bl $$dyncall,%r31
-       copy %r31,%r2
-.L16:
-       ldw -84(%r30),%r2
-       bv %r0(%r2)
-       ldwm -64(%r30),%r4
-       .EXIT
-       .PROCEND
-#APP
-
-/*@TESTS_END*/
-
 /*@_init_PROLOG_BEGINS*/
        .section .init
 #NO_APP
@@ -62,35 +30,6 @@
        END_INIT
 
 /*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
-       .section .init
-#NO_APP
-       ldw -84(%r30),%r2
-       bv %r0(%r2)
-       ldwm -64(%r30),%r4
-       .EXIT
-       .PROCEND
-#APP
-       END_INIT
-       .section .text
-#NO_APP
-       .align 4
-       .weak   __gmon_start__
-       .EXPORT __gmon_start__,ENTRY
-       .type    __gmon_start__,@function
-__gmon_start__:
-__gmon_start__:
-       .PROC
-       .CALLINFO FRAME=0,NO_CALLS
-       .ENTRY
-       bv,n %r0(%r2)
-       .EXIT
-       .PROCEND
-#APP
-
-/*@_init_EPILOG_ENDS*/
-
 /*@_fini_PROLOG_BEGINS*/
        .section .fini
 #NO_APP
@@ -113,24 +52,5 @@
        END_FINI
 
 /*@_fini_PROLOG_ENDS*/
-#NO_APP
-       .CALL 
-       bl i_am_not_a_leaf,%r2
-       nop
-#APP
-
-/*@_fini_EPILOG_BEGINS*/
-       .section .fini
-#NO_APP
-       ldw -84(%r30),%r2
-       bv %r0(%r2)
-       ldwm -64(%r30),%r4
-       .EXIT
-       .PROCEND
-#APP
-       END_FINI
-
-/*@_fini_EPILOG_ENDS*/
-
 /*@TRAILER_BEGINS*/
        .ident  "GCC: (GNU) 2.9-hppa-991112"