NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

toolchain/52427: VAX text relocations

>Number:         52427
>Category:       toolchain
>Synopsis:       VAX text relocations
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    toolchain-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 25 07:50:00 +0000 2017
>Originator:     Martin Husemann
>Release:        NetBSD 8.99.1
The NetBSD Foundation, Inc.
System: NetBSD 8.99.1 NetBSD 8.99.1 (DEAD) #7: Sun Jul 23 12:04:50 CEST 2017 vax
Architecture: vax
Machine: vax

After my recent fixes to compiler_rt, perl is buildable on VAX again.

 > perl -e 'print "hello\n";'
/usr/pkg/lib/perl5/5.26.0/vax-netbsd-thread-multi/CORE/ text relocations

Looking at the relocations show they are all of the form:

	R_VAX_RELATIVE   *ABS*+0x6967c

and seem to be part of big switch/case things. The first looks like this:

   5ca00:       31 de db        brw 5a5e1 <Perl_yylex+0x2e6f>
   5ca03:       cf 50 00 0a     casel r0,$0x0,$0xa
   5ca07:       27 11 38 45     divp $0x11,$0x38,$0x14[r5],*0xffffd214(r2),*0x46
   5ca0b:       14 d2 14 d2 
   5ca0f:       b0 46 b0 46 
   5ca13:       95 12           tstb $0x12
   5ca15:       95 12           tstb $0x12
   5ca17:       19 00           blss 5ca19 <Perl_yylex+0x52a7>
   5ca19:       14 d2           bgtr 5c9ed <Perl_yylex+0x527b>
   5ca1b:       38 45 31 06     editpc $0x31[r5],$0x6,$0x0,$0x17
   5ca1f:       00 17 
   5ca21:       9f cf 76 06     pushab 5d09b <Perl_yylex+0x5929>
                        5ca22: R_VAX_RELATIVE   *ABS*+0x676cf
   5ca25:       00              halt
   5ca26:       dd 5a           pushl r10
   5ca28:       fb 01 ff bd     calls $0x1,*1a60ec <_GLOBAL_OFFSET_TABLE_+0xea0>
   5ca2c:       96 14 00 

All others look like a jump table:

   5cdd1:       17 9f 30 6c     jmp *0x66c30
   5cdd5:       06 00 
                        5cdd3: R_VAX_RELATIVE   *ABS*+0x66c30
   5cdd7:       17 9f 7c 96     jmp *0x6967c
   5cddb:       06 00 
                        5cdd9: R_VAX_RELATIVE   *ABS*+0x6967c
   5cddd:       17 9f a8 71     jmp *0x671a8
   5cde1:       06 00 

Is this a binutils or gcc issue? Is it avoidable? If not, should we make
ld.elf_so quiet about it on VAX?

Build perl on vax and use it.


Home | Main Index | Thread Index | Old Index