This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils 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]

alpha brsgp relocation lossage


One of these days we're just going to start from scratch with the
relocation code.  Or failing that, with a brand new assembler that
doesn't support broken object formats.  I don't understand relocation
generation at all.  I don't even understand why this test case goes
wrong well enough to reduce it, since small examples did work.

What I do know is that by moving code from one place to another, we
change the order in which this frobbing is done, and this new order
happens to work for this test case.

What we were getting before was "BRADDR create_dev+0x99c" or somesuch.
Which of course is broken.



r~


 	* config/tc-alpha.c (alpha_validate_fix): Move code ...
 	(alpha_fix_adjustable): ... here.
 	* config/tc-alpha.h (TC_VALIDATE_FIX): Remove.


Index: config/tc-alpha.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-alpha.c,v
retrieving revision 1.48
diff -c -p -d -r1.48 tc-alpha.c
*** config/tc-alpha.c	19 Sep 2002 16:13:37 -0000	1.48
--- config/tc-alpha.c	7 Nov 2002 00:35:48 -0000
*************** alpha_define_label (sym)
*** 1419,1467 ****
    alpha_insn_label = sym;
  }
  
- /* If we have a BRSGP reloc to a local symbol, adjust it to BRADDR and
-    let it get resolved at assembly time.  */
- 
- #ifdef OBJ_ELF
- void
- alpha_validate_fix (f)
-      fixS *f;
- {
-   int offset = 0;
-   const char *name;
- 
-   if (f->fx_r_type != BFD_RELOC_ALPHA_BRSGP)
-     return;
- 
-   if (! S_IS_DEFINED (f->fx_addsy))
-     return;
- 
-   switch (S_GET_OTHER (f->fx_addsy) & STO_ALPHA_STD_GPLOAD)
-     {
-     case STO_ALPHA_NOPV:
-       break;
-     case STO_ALPHA_STD_GPLOAD:
-       offset = 8;
-       break;
-     default:
-       if (S_IS_LOCAL (f->fx_addsy))
- 	name = "<local>";
-       else
- 	name = S_GET_NAME (f->fx_addsy);
-       as_bad_where (f->fx_file, f->fx_line,
- 		    _("!samegp reloc against symbol without .prologue: %s"),
- 		    name);
-       break;
-     }
- 
-   if (! (S_IS_EXTERN (f->fx_addsy) || S_IS_WEAK (f->fx_addsy)))
-     {
-       f->fx_r_type = BFD_RELOC_23_PCREL_S2;
-       f->fx_offset += offset;
-     }
- }
- #endif
- 
  /* Return true if we must always emit a reloc for a type and false if
     there is some hope of resolving it at assembly time.  */
  
--- 1419,1424 ----
*************** alpha_fix_adjustable (f)
*** 1521,1527 ****
      case BFD_RELOC_ALPHA_GPDISP_HI16:
      case BFD_RELOC_ALPHA_GPDISP_LO16:
      case BFD_RELOC_ALPHA_GPDISP:
-     case BFD_RELOC_ALPHA_BRSGP:
        return 0;
  
      case BFD_RELOC_ALPHA_LITERAL:
--- 1478,1483 ----
*************** alpha_fix_adjustable (f)
*** 1558,1563 ****
--- 1514,1552 ----
        /* ??? No idea why we can't return a reference to .tbss+10, but
  	 we're preventing this in the other assemblers.  Follow for now.  */
        return 0;
+ 
+     case BFD_RELOC_ALPHA_BRSGP:
+       /* If we have a BRSGP reloc to a local symbol, adjust it to BRADDR and
+          let it get resolved at assembly time.  */
+       {
+ 	symbolS *sym = f->fx_addsy;
+ 	const char *name;
+ 	int offset = 0;
+ 
+ 	if (! S_IS_DEFINED (sym) || S_FORCE_RELOC (sym))
+ 	  return 0;
+ 
+ 	switch (S_GET_OTHER (sym) & STO_ALPHA_STD_GPLOAD)
+ 	  {
+ 	  case STO_ALPHA_NOPV:
+ 	    break;
+ 	  case STO_ALPHA_STD_GPLOAD:
+ 	    offset = 8;
+ 	    break;
+ 	  default:
+ 	    if (S_IS_LOCAL (sym))
+ 	      name = "<local>";
+ 	    else
+ 	      name = S_GET_NAME (sym);
+ 	    as_bad_where (f->fx_file, f->fx_line,
+ 		_("!samegp reloc against symbol without .prologue: %s"),
+ 		name);
+ 	    break;
+ 	  }
+ 	f->fx_r_type = BFD_RELOC_23_PCREL_S2;
+ 	f->fx_offset += offset;
+ 	return 1;
+       }
  
      default:
        return 1;
Index: config/tc-alpha.h
===================================================================
RCS file: /cvs/src/src/gas/config/tc-alpha.h,v
retrieving revision 1.15
diff -c -p -d -r1.15 tc-alpha.h
*** config/tc-alpha.h	17 Sep 2002 02:24:37 -0000	1.15
--- config/tc-alpha.h	7 Nov 2002 00:35:48 -0000
***************
*** 49,64 ****
  struct fix;
  struct alpha_reloc_tag;
  
- extern void alpha_validate_fix PARAMS ((struct fix *));
  extern int alpha_force_relocation PARAMS ((struct fix *));
  extern int alpha_fix_adjustable PARAMS ((struct fix *));
  
  extern unsigned long alpha_gprmask, alpha_fprmask;
  extern valueT alpha_gp_value;
  
- #ifdef OBJ_ELF
- #define TC_VALIDATE_FIX(FIX,SEGTYPE,SKIP) alpha_validate_fix (FIX)
- #endif
  #define TC_FORCE_RELOCATION(FIX)	alpha_force_relocation (FIX)
  #define tc_fix_adjustable(FIX)		alpha_fix_adjustable (FIX)
  #define RELOC_REQUIRES_SYMBOL
--- 49,60 ----
Index: testsuite/gas/alpha/alpha.exp
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/alpha/alpha.exp,v
retrieving revision 1.5
diff -c -p -d -r1.5 alpha.exp
*** testsuite/gas/alpha/alpha.exp	19 Sep 2002 16:13:38 -0000	1.5
--- testsuite/gas/alpha/alpha.exp	7 Nov 2002 00:35:48 -0000
*************** if { [istarget alpha*-*-*] } then {
*** 30,35 ****
--- 30,36 ----
  	run_dump_test "elf-reloc-5"
  	run_list_test "elf-reloc-6" ""
  	run_dump_test "elf-reloc-7"
+ 	run_dump_test "elf-reloc-8"
  	run_dump_test "elf-tls-1"
  	run_list_test "elf-tls-2" ""
  	run_list_test "elf-tls-3" ""
Index: testsuite/gas/alpha/elf-reloc-8.d
===================================================================
RCS file: testsuite/gas/alpha/elf-reloc-8.d
diff -N testsuite/gas/alpha/elf-reloc-8.d
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- testsuite/gas/alpha/elf-reloc-8.d	7 Nov 2002 00:35:48 -0000
***************
*** 0 ****
--- 1,309 ----
+ #objdump: -r
+ #name: alpha elf-reloc-8
+ 
+ .*:     file format elf64-alpha
+ 
+ RELOCATION RECORDS FOR \[\.text\]:
+ OFFSET *TYPE *VALUE 
+ 0*0000000 GPDISP            \.text\+0x0*0000004
+ 0*0000014 GPRELHIGH         \.bss\+0x0*0000040
+ 0*0000018 ELF_LITERAL       ROOT_DEV
+ 0*0000024 GPRELLOW          \.bss\+0x0*0000040
+ 0*0000040 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000eb
+ 0*0000048 GPRELLOW          \.rodata\.str1\.1\+0x0*00000eb
+ 0*000004c BRADDR            \.init\.text\+0x0*0000998
+ 0*0000050 GPRELHIGH         \.init\.data
+ 0*0000054 GPRELLOW          \.init\.data
+ 0*000005c BRADDR            \.init\.text\+0x0*0000aa8
+ 0*0000070 BRADDR            \.init\.text\+0x0*0000a48
+ 0*0000074 ELF_LITERAL       sys_umount
+ 0*0000084 LITUSE            \.text\+0x0*0000003
+ 0*0000078 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000101
+ 0*0000080 GPRELLOW          \.rodata\.str1\.1\+0x0*0000101
+ 0*0000084 HINT              sys_umount
+ 0*0000088 GPDISP            \.text\+0x0*0000004
+ 0*000009c GPRELHIGH         \.rodata\.str1\.1\+0x0*0000106
+ 0*00000a0 ELF_LITERAL       sys_mount
+ 0*00000b4 LITUSE            \.text\+0x0*0000003
+ 0*00000a4 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000108
+ 0*00000a8 GPRELLOW          \.rodata\.str1\.1\+0x0*0000106
+ 0*00000ac GPRELLOW          \.rodata\.str1\.1\+0x0*0000108
+ 0*00000b4 HINT              sys_mount
+ 0*00000b8 GPDISP            \.text\+0x0*0000004
+ 0*00000c4 ELF_LITERAL       sys_chroot
+ 0*00000c8 LITUSE            \.text\+0x0*0000003
+ 0*00000c8 HINT              sys_chroot
+ 0*00000cc GPDISP            \.text\+0x0*0000004
+ 0*00000d4 ELF_LITERAL       security_ops
+ 0*00000e4 GPDISP            \.text\+0x0*000000c
+ 0*0000104 BRADDR            \.init\.text\+0x0*0000a90
+ 0*0000114 GPRELHIGH         rd_doload
+ 0*0000118 GPRELLOW          rd_doload
+ 0*0000124 BRADDR            \.init\.text\+0x0*0000a28
+ 0*0000140 GPRELLOW          \.bss\+0x0*0000040
+ 0*0000148 BRSGP             name_to_dev_t
+ 0*0000150 ELF_LITERAL       memcmp
+ 0*0000164 LITUSE            \.text\+0x0*0000003
+ 0*0000154 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000031
+ 0*0000160 GPRELLOW          \.rodata\.str1\.1\+0x0*0000031
+ 0*0000164 HINT              memcmp
+ 0*0000168 GPDISP            \.text\+0x0*0000004
+ 0*0000178 ELF_LITERAL       strcpy
+ 0*0000188 LITUSE            \.text\+0x0*0000003
+ 0*000017c GPRELHIGH         \.bss
+ 0*0000180 GPRELLOW          \.bss
+ 0*0000188 HINT              strcpy
+ 0*000018c GPDISP            \.text\+0x0*0000004
+ 
+ 
+ RELOCATION RECORDS FOR \[\.init\.text\]:
+ OFFSET *TYPE *VALUE 
+ 0*0000000 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000008 ELF_LITERAL       simple_strtol
+ 0*000001c LITUSE            \.init\.text\+0x0*0000003
+ 0*000001c HINT              simple_strtol
+ 0*0000020 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000030 GPRELHIGH         rd_doload
+ 0*0000034 GPRELLOW          rd_doload
+ 0*0000050 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000064 GPREL16           root_mountflags
+ 0*0000070 GPREL16           root_mountflags
+ 0*0000080 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000094 GPREL16           root_mountflags
+ 0*00000a0 GPREL16           root_mountflags
+ 0*00000b0 GPDISP            \.init\.text\+0x0*0000004
+ 0*00000bc ELF_LITERAL       sprintf
+ 0*00000f0 LITUSE            \.init\.text\+0x0*0000003
+ 0*00000d0 GPRELHIGH         \.rodata\.str1\.1
+ 0*00000ec GPRELLOW          \.rodata\.str1\.1
+ 0*00000f0 HINT              sprintf
+ 0*00000f4 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000108 ELF_LITERAL       sys_open
+ 0*000010c LITUSE            \.init\.text\+0x0*0000003
+ 0*000010c HINT              sys_open
+ 0*0000110 GPDISP            \.init\.text\+0x0*0000008
+ 0*0000120 ELF_LITERAL       sys_read
+ 0*0000134 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000134 HINT              sys_read
+ 0*0000138 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000148 ELF_LITERAL       sys_close
+ 0*000014c LITUSE            \.init\.text\+0x0*0000003
+ 0*000014c HINT              sys_close
+ 0*0000150 GPDISP            \.init\.text\+0x0*000000c
+ 0*00001a0 ELF_LITERAL       simple_strtoul
+ 0*00001b4 LITUSE            \.init\.text\+0x0*0000003
+ 0*00001b4 HINT              simple_strtoul
+ 0*00001b8 GPDISP            \.init\.text\+0x0*0000008
+ 0*00001d8 ELF_LITERAL       sprintf
+ 0*00001ec LITUSE            \.init\.text\+0x0*0000003
+ 0*00001dc GPRELHIGH         \.rodata\.str1\.1\+0x0*0000012
+ 0*00001e8 GPRELLOW          \.rodata\.str1\.1\+0x0*0000012
+ 0*00001ec HINT              sprintf
+ 0*00001f0 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000204 ELF_LITERAL       sys_open
+ 0*0000208 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000208 HINT              sys_open
+ 0*000020c GPDISP            \.init\.text\+0x0*0000008
+ 0*000021c ELF_LITERAL       sys_read
+ 0*000022c LITUSE            \.init\.text\+0x0*0000003
+ 0*000022c HINT              sys_read
+ 0*0000230 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000240 ELF_LITERAL       sys_close
+ 0*0000244 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000244 HINT              sys_close
+ 0*0000248 GPDISP            \.init\.text\+0x0*000000c
+ 0*0000274 ELF_LITERAL       simple_strtoul
+ 0*0000288 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000288 HINT              simple_strtoul
+ 0*000028c GPDISP            \.init\.text\+0x0*0000008
+ 0*00002c0 GPDISP            \.init\.text\+0x0*0000004
+ 0*00002cc ELF_LITERAL       sys_mkdir
+ 0*00002fc LITUSE            \.init\.text\+0x0*0000003
+ 0*00002dc GPRELHIGH         \.rodata\.str1\.1\+0x0*0000026
+ 0*00002e0 GPRELLOW          \.rodata\.str1\.1\+0x0*0000026
+ 0*00002fc HINT              sys_mkdir
+ 0*0000300 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000314 GPRELHIGH         \.rodata\.str1\.1\+0x0*000002b
+ 0*0000318 ELF_LITERAL       sys_mount
+ 0*0000324 LITUSE            \.init\.text\+0x0*0000003
+ 0*000031c GPRELLOW          \.rodata\.str1\.1\+0x0*000002b
+ 0*0000324 HINT              sys_mount
+ 0*0000328 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000334 ELF_LITERAL       memcmp
+ 0*0000348 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000338 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000031
+ 0*0000344 GPRELLOW          \.rodata\.str1\.1\+0x0*0000031
+ 0*0000348 HINT              memcmp
+ 0*000034c GPDISP            \.init\.text\+0x0*0000004
+ 0*0000358 ELF_LITERAL       memcmp
+ 0*0000374 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000360 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000037
+ 0*0000370 GPRELLOW          \.rodata\.str1\.1\+0x0*0000037
+ 0*0000374 HINT              memcmp
+ 0*0000378 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000384 ELF_LITERAL       strlen
+ 0*000038c LITUSE            \.init\.text\+0x0*0000003
+ 0*000038c HINT              strlen
+ 0*0000390 GPDISP            \.init\.text\+0x0*0000008
+ 0*00003a0 ELF_LITERAL       strcpy
+ 0*00003ac LITUSE            \.init\.text\+0x0*0000003
+ 0*00003ac HINT              strcpy
+ 0*00003b0 GPDISP            \.init\.text\+0x0*000000c
+ 0*0000418 ELF_LITERAL       _ctype
+ 0*0000480 ELF_LITERAL       simple_strtoul
+ 0*000048c LITUSE            \.init\.text\+0x0*0000003
+ 0*000048c HINT              simple_strtoul
+ 0*0000490 GPDISP            \.init\.text\+0x0*000000c
+ 0*00004cc ELF_LITERAL       _ctype
+ 0*00004f4 ELF_LITERAL       sys_umount
+ 0*0000500 LITUSE            \.init\.text\+0x0*0000003
+ 0*00004f8 GPRELLOW          \.rodata\.str1\.1\+0x0*0000026
+ 0*0000500 HINT              sys_umount
+ 0*0000504 GPDISP            \.init\.text\+0x0*0000004
+ 0*000050c ELF_LITERAL       sys_rmdir
+ 0*0000514 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000510 GPRELLOW          \.rodata\.str1\.1\+0x0*0000026
+ 0*0000514 HINT              sys_rmdir
+ 0*0000518 GPDISP            \.init\.text\+0x0*0000010
+ 0*0000570 ELF_LITERAL       simple_strtoul
+ 0*0000580 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000580 HINT              simple_strtoul
+ 0*0000584 GPDISP            \.init\.text\+0x0*0000008
+ 0*00005a0 GPDISP            \.init\.text\+0x0*0000004
+ 0*00005ac ELF_LITERAL       strncpy
+ 0*00005cc LITUSE            \.init\.text\+0x0*0000003
+ 0*00005c0 GPRELHIGH         \.bss\+0x0*0000040
+ 0*00005c4 GPRELLOW          \.bss\+0x0*0000040
+ 0*00005cc HINT              strncpy
+ 0*00005d0 GPDISP            \.init\.text\+0x0*000000c
+ 0*00005f0 GPDISP            \.init\.text\+0x0*0000004
+ 0*00005f8 GPRELHIGH         \.init\.data\+0x0*0000040
+ 0*0000600 GPRELLOW          \.init\.data\+0x0*0000040
+ 0*0000610 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000618 GPRELHIGH         \.init\.data\+0x0*0000048
+ 0*0000620 GPRELLOW          \.init\.data\+0x0*0000048
+ 0*0000630 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000638 GPRELHIGH         \.init\.data\+0x0*0000048
+ 0*0000640 GPRELLOW          \.init\.data\+0x0*0000048
+ 0*0000658 ELF_LITERAL       strcpy
+ 0*000065c LITUSE            \.init\.text\+0x0*0000003
+ 0*000065c HINT              strcpy
+ 0*0000660 GPDISP            \.init\.text\+0x0*0000008
+ 0*00006c8 ELF_LITERAL       get_filesystem_list
+ 0*00006cc LITUSE            \.init\.text\+0x0*0000003
+ 0*00006cc HINT              get_filesystem_list
+ 0*00006d0 GPDISP            \.init\.text\+0x0*000000c
+ 0*00006f0 ELF_LITERAL       strchr
+ 0*0000700 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000700 HINT              strchr
+ 0*0000704 GPDISP            \.init\.text\+0x0*0000008
+ 0*0000750 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000758 ELF_LITERAL       names_cachep
+ 0*0000760 ELF_LITERAL       kmem_cache_alloc
+ 0*0000794 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000794 HINT              kmem_cache_alloc
+ 0*0000798 GPDISP            \.init\.text\+0x0*0000004
+ 0*00007b8 GPRELHIGH         \.rodata\.str1\.1\+0x0*000003b
+ 0*00007bc GPRELHIGH         \.init\.data\+0x0*0000040
+ 0*00007c0 ELF_LITERAL       ROOT_DEV
+ 0*00007c4 GPRELLOW          \.rodata\.str1\.1\+0x0*000003b
+ 0*00007c8 GPRELLOW          \.init\.data\+0x0*0000040
+ 0*00007cc ELF_LITERAL       sys_mount
+ 0*00007e0 LITUSE            \.init\.text\+0x0*0000003
+ 0*00007e0 HINT              sys_mount
+ 0*00007e4 GPDISP            \.init\.text\+0x0*0000008
+ 0*000080c ELF_LITERAL       kdevname
+ 0*0000814 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000814 HINT              kdevname
+ 0*0000818 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000824 ELF_LITERAL       printk
+ 0*0000838 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000828 GPRELHIGH         \.bss
+ 0*000082c GPRELHIGH         \.rodata\.str1\.1\+0x0*0000041
+ 0*0000830 GPRELLOW          \.bss
+ 0*0000834 GPRELLOW          \.rodata\.str1\.1\+0x0*0000041
+ 0*0000838 HINT              printk
+ 0*000083c GPDISP            \.init\.text\+0x0*0000004
+ 0*0000844 ELF_LITERAL       printk
+ 0*0000850 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000848 GPRELHIGH         \.rodata\.str1\.1\+0x0*000006a
+ 0*000084c GPRELLOW          \.rodata\.str1\.1\+0x0*000006a
+ 0*0000850 HINT              printk
+ 0*0000854 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000860 ELF_LITERAL       kdevname
+ 0*0000868 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000868 HINT              kdevname
+ 0*000086c GPDISP            \.init\.text\+0x0*0000004
+ 0*0000878 GPRELHIGH         \.rodata\.str1\.1\+0x0*0000097
+ 0*000087c GPRELLOW          \.rodata\.str1\.1\+0x0*0000097
+ 0*0000880 ELF_LITERAL       panic
+ 0*0000884 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000884 HINT              panic
+ 0*0000890 ELF_LITERAL       strlen
+ 0*0000894 LITUSE            \.init\.text\+0x0*0000003
+ 0*0000894 HINT              strlen
+ 0*0000898 GPDISP            \.init\.text\+0x0*0000008
+ 0*00008b0 ELF_LITERAL       ROOT_DEV
+ 0*00008b4 ELF_LITERAL       kdevname
+ 0*00008c0 LITUSE            \.init\.text\+0x0*0000003
+ 0*00008c0 HINT              kdevname
+ 0*00008c4 GPDISP            \.init\.text\+0x0*0000004
+ 0*00008d4 ELF_LITERAL       names_cachep
+ 0*00008d8 ELF_LITERAL       kmem_cache_free
+ 0*00008e4 LITUSE            \.init\.text\+0x0*0000003
+ 0*00008e4 HINT              kmem_cache_free
+ 0*00008e8 GPDISP            \.init\.text\+0x0*0000004
+ 0*00008f4 ELF_LITERAL       sys_chdir
+ 0*00008f8 LITUSE            \.init\.text\+0x0*0000003
+ 0*00008f8 HINT              sys_chdir
+ 0*00008fc GPDISP            \.init\.text\+0x0*0000008
+ 0*0000908 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000ba
+ 0*000090c GPRELLOW          \.rodata\.str1\.1\+0x0*00000ba
+ 0*0000918 ELF_LITERAL       ROOT_DEV
+ 0*0000938 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000c4
+ 0*000093c GPRELLOW          \.rodata\.str1\.1\+0x0*00000c4
+ 0*0000940 ELF_LITERAL       printk
+ 0*000094c LITUSE            \.init\.text\+0x0*0000003
+ 0*0000944 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000c5
+ 0*0000948 GPRELLOW          \.rodata\.str1\.1\+0x0*00000c5
+ 0*000094c HINT              printk
+ 0*0000950 GPDISP            \.init\.text\+0x0*000000c
+ 0*0000990 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000998 ELF_LITERAL       sys_unlink
+ 0*00009b4 LITUSE            \.init\.text\+0x0*0000003
+ 0*00009b4 HINT              sys_unlink
+ 0*00009b8 GPDISP            \.init\.text\+0x0*0000004
+ 0*00009cc GPREL16           \.sbss
+ 0*00009f0 ELF_LITERAL       sys_mknod
+ 0*00009f4 LITUSE            \.init\.text\+0x0*0000003
+ 0*00009f4 HINT              sys_mknod
+ 0*00009f8 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000a20 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000a28 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000eb
+ 0*0000a2c GPRELLOW          \.rodata\.str1\.1\+0x0*00000eb
+ 0*0000a40 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000a48 ELF_LITERAL       ROOT_DEV
+ 0*0000a50 GPRELHIGH         \.bss
+ 0*0000a58 GPRELLOW          \.bss
+ 0*0000a60 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000eb
+ 0*0000a64 GPRELLOW          \.rodata\.str1\.1\+0x0*00000eb
+ 0*0000a7c GPREL16           root_mountflags
+ 0*0000aa0 GPDISP            \.init\.text\+0x0*0000004
+ 0*0000aa8 GPRELHIGH         \.rodata\.str1\.1\+0x0*00000f5
+ 0*0000aac GPRELLOW          \.rodata\.str1\.1\+0x0*00000f5
+ 
+ 
+ RELOCATION RECORDS FOR \[\.init\.setup\]:
+ OFFSET *TYPE *VALUE 
+ 0*0000000 REFQUAD           \.init\.data\+0x0*0000004
+ 0*0000008 REFQUAD           \.init\.text
+ 0*0000010 REFQUAD           \.init\.data\+0x0*0000012
+ 0*0000018 REFQUAD           \.init\.text\+0x0*0000050
+ 0*0000020 REFQUAD           \.init\.data\+0x0*0000015
+ 0*0000028 REFQUAD           \.init\.text\+0x0*0000080
+ 0*0000030 REFQUAD           \.init\.data\+0x0*0000018
+ 0*0000038 REFQUAD           \.init\.text\+0x0*00005a0
+ 0*0000040 REFQUAD           \.init\.data\+0x0*000001e
+ 0*0000048 REFQUAD           \.init\.text\+0x0*00005f0
+ 0*0000050 REFQUAD           \.init\.data\+0x0*0000029
+ 0*0000058 REFQUAD           \.init\.text\+0x0*0000610
Index: testsuite/gas/alpha/elf-reloc-8.s
===================================================================
RCS file: testsuite/gas/alpha/elf-reloc-8.s
diff -N testsuite/gas/alpha/elf-reloc-8.s
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- testsuite/gas/alpha/elf-reloc-8.s	7 Nov 2002 00:35:48 -0000
***************
*** 0 ****
--- 1,1119 ----
+ 	.set noat
+ 	.set noreorder
+ 	.set nomacro
+ 	.arch ev6
+ 	.section	.init.data,"aw",@progbits
+ 	.align 2
+ 	.type	mount_initrd, @object
+ 	.size	mount_initrd, 4
+ mount_initrd:
+ 	.long	0
+ 	.globl root_mountflags
+ 	.section	.sdata,"aw",@progbits
+ 	.align 2
+ 	.type	root_mountflags, @object
+ 	.size	root_mountflags, 4
+ root_mountflags:
+ 	.long	32769
+ 	.section	.sbss,"aw"
+ 	.type	do_devfs, @object
+ 	.size	do_devfs, 4
+ 	.align 2
+ do_devfs:
+ 	.zero	4
+ 	.section	.init.text,"ax",@progbits
+ 	.align 2
+ 	.align 4
+ 	.ent load_ramdisk
+ load_ramdisk:
+ 	.frame $30,16,$26,0
+ 	.mask 0x4000000,-16
+ 	ldah $29,0($27)		!gpdisp!1
+ 	lda $29,0($29)		!gpdisp!1
+ $load_ramdisk..ng:
+ 	ldq $27,simple_strtol($29)		!literal!2
+ 	lda $30,-16($30)
+ 	mov $31,$17
+ 	mov $31,$18
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	jsr $26,($27),simple_strtol		!lituse_jsr!2
+ 	ldah $29,0($26)		!gpdisp!3
+ 	lda $29,0($29)		!gpdisp!3
+ 	ldq $26,0($30)
+ 	and $0,3,$0
+ 	ldah $1,rd_doload($29)		!gprelhigh
+ 	stl $0,rd_doload($1)		!gprellow
+ 	lda $0,1($31)
+ 	lda $30,16($30)
+ 	ret $31,($26),1
+ 	.end load_ramdisk
+ 	.section	.init.data
+ 	.type	__setup_str_load_ramdisk, @object
+ 	.size	__setup_str_load_ramdisk, 14
+ __setup_str_load_ramdisk:
+ 	.ascii "load_ramdisk=\0"
+ 	.section	.init.setup,"aw",@progbits
+ 	.align 3
+ 	.type	__setup_load_ramdisk, @object
+ 	.size	__setup_load_ramdisk, 16
+ __setup_load_ramdisk:
+ 	.quad	__setup_str_load_ramdisk
+ 	.quad	load_ramdisk
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent readonly
+ readonly:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!4
+ 	lda $29,0($29)		!gpdisp!4
+ $readonly..ng:
+ 	.prologue 1
+ 	ldbu $1,0($16)
+ 	mov $31,$0
+ 	bne $1,$L167
+ 	ldl $1,root_mountflags($29)		!gprel
+ 	lda $0,1($31)
+ 	bis $1,1,$1
+ 	stl $1,root_mountflags($29)		!gprel
+ $L167:
+ 	ret $31,($26),1
+ 	.end readonly
+ 	.align 2
+ 	.align 4
+ 	.ent readwrite
+ readwrite:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!5
+ 	lda $29,0($29)		!gpdisp!5
+ $readwrite..ng:
+ 	.prologue 1
+ 	ldbu $1,0($16)
+ 	mov $31,$0
+ 	bne $1,$L169
+ 	ldl $1,root_mountflags($29)		!gprel
+ 	lda $0,1($31)
+ 	bic $1,1,$1
+ 	stl $1,root_mountflags($29)		!gprel
+ $L169:
+ 	ret $31,($26),1
+ 	.end readwrite
+ 	.section	.init.data
+ 	.type	__setup_str_readonly, @object
+ 	.size	__setup_str_readonly, 3
+ __setup_str_readonly:
+ 	.ascii "ro\0"
+ 	.section	.init.setup
+ 	.align 3
+ 	.type	__setup_readonly, @object
+ 	.size	__setup_readonly, 16
+ __setup_readonly:
+ 	.quad	__setup_str_readonly
+ 	.quad	readonly
+ 	.section	.init.data
+ 	.type	__setup_str_readwrite, @object
+ 	.size	__setup_str_readwrite, 3
+ __setup_str_readwrite:
+ 	.ascii "rw\0"
+ 	.section	.init.setup
+ 	.align 3
+ 	.type	__setup_readwrite, @object
+ 	.size	__setup_readwrite, 16
+ __setup_readwrite:
+ 	.quad	__setup_str_readwrite
+ 	.quad	readwrite
+ 	.section	.rodata.str1.1,"aMS",@progbits,1
+ $LC1:
+ 	.ascii "/sys/block/%s/dev\0"
+ $LC2:
+ 	.ascii "/sys/block/%s/range\0"
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent try_name
+ try_name:
+ 	.frame $30,160,$26,0
+ 	.mask 0x4003e00,-160
+ 	ldah $29,0($27)		!gpdisp!6
+ 	lda $29,0($29)		!gpdisp!6
+ $try_name..ng:
+ 	lda $30,-160($30)
+ 	ldq $27,sprintf($29)		!literal!25
+ 	stq $10,16($30)
+ 	stq $12,32($30)
+ 	mov $16,$10
+ 	mov $17,$12
+ 	ldah $17,$LC1($29)		!gprelhigh
+ 	stq $26,0($30)
+ 	stq $9,8($30)
+ 	lda $16,48($30)
+ 	stq $11,24($30)
+ 	stq $13,40($30)
+ 	.prologue 1
+ 	mov $10,$18
+ 	lda $17,$LC1($17)		!gprellow
+ 	jsr $26,($27),sprintf		!lituse_jsr!25
+ 	ldah $29,0($26)		!gpdisp!26
+ 	lda $29,0($29)		!gpdisp!26
+ 	lda $16,48($30)
+ 	mov $31,$18
+ 	mov $31,$17
+ 	ldq $27,sys_open($29)		!literal!23
+ 	jsr $26,($27),sys_open		!lituse_jsr!23
+ 	ldah $29,0($26)		!gpdisp!24
+ 	addl $31,$0,$9
+ 	lda $29,0($29)		!gpdisp!24
+ 	blt $9,$L174
+ 	ldq $27,sys_read($29)		!literal!21
+ 	lda $11,112($30)
+ 	mov $9,$16
+ 	lda $18,32($31)
+ 	mov $11,$17
+ 	jsr $26,($27),sys_read		!lituse_jsr!21
+ 	ldah $29,0($26)		!gpdisp!22
+ 	lda $29,0($29)		!gpdisp!22
+ 	addl $31,$9,$16
+ 	addl $31,$0,$9
+ 	ldq $27,sys_close($29)		!literal!19
+ 	jsr $26,($27),sys_close		!lituse_jsr!19
+ 	ldah $29,0($26)		!gpdisp!20
+ 	cmpeq $9,32,$2
+ 	cmple $9,0,$1
+ 	lda $29,0($29)		!gpdisp!20
+ 	bis $1,$2,$1
+ 	bne $1,$L174
+ 	subl $9,1,$2
+ 	addq $11,$2,$0
+ 	ldbu $1,0($0)
+ 	cmpeq $1,10,$1
+ 	bne $1,$L189
+ $L174:
+ 	mov $31,$0
+ $L171:
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	ldq $10,16($30)
+ 	ldq $11,24($30)
+ 	ldq $12,32($30)
+ 	ldq $13,40($30)
+ 	lda $30,160($30)
+ 	ret $31,($26),1
+ $L189:
+ 	ldq $27,simple_strtoul($29)		!literal!17
+ 	mov $11,$16
+ 	lda $17,144($30)
+ 	lda $18,16($31)
+ 	stb $31,0($0)
+ 	jsr $26,($27),simple_strtoul		!lituse_jsr!17
+ 	ldah $29,0($26)		!gpdisp!18
+ 	ldq $1,144($30)
+ 	lda $29,0($29)		!gpdisp!18
+ 	addl $31,$0,$13
+ 	ldbu $2,0($1)
+ 	bne $2,$L174
+ 	mov $13,$0
+ 	beq $12,$L171
+ 	ldq $27,sprintf($29)		!literal!15
+ 	ldah $17,$LC2($29)		!gprelhigh
+ 	mov $10,$18
+ 	lda $16,48($30)
+ 	lda $17,$LC2($17)		!gprellow
+ 	jsr $26,($27),sprintf		!lituse_jsr!15
+ 	ldah $29,0($26)		!gpdisp!16
+ 	lda $29,0($29)		!gpdisp!16
+ 	lda $16,48($30)
+ 	mov $31,$18
+ 	mov $31,$17
+ 	ldq $27,sys_open($29)		!literal!13
+ 	jsr $26,($27),sys_open		!lituse_jsr!13
+ 	ldah $29,0($26)		!gpdisp!14
+ 	addl $31,$0,$9
+ 	lda $29,0($29)		!gpdisp!14
+ 	blt $9,$L174
+ 	ldq $27,sys_read($29)		!literal!11
+ 	mov $9,$16
+ 	mov $11,$17
+ 	lda $18,32($31)
+ 	jsr $26,($27),sys_read		!lituse_jsr!11
+ 	ldah $29,0($26)		!gpdisp!12
+ 	lda $29,0($29)		!gpdisp!12
+ 	addl $31,$9,$16
+ 	addl $31,$0,$9
+ 	ldq $27,sys_close($29)		!literal!9
+ 	jsr $26,($27),sys_close		!lituse_jsr!9
+ 	ldah $29,0($26)		!gpdisp!10
+ 	cmpeq $9,32,$2
+ 	cmple $9,0,$1
+ 	lda $29,0($29)		!gpdisp!10
+ 	bis $1,$2,$1
+ 	bne $1,$L174
+ 	subl $9,1,$2
+ 	addq $11,$2,$0
+ 	ldbu $1,0($0)
+ 	cmpeq $1,10,$1
+ 	beq $1,$L174
+ 	ldq $27,simple_strtoul($29)		!literal!7
+ 	mov $11,$16
+ 	lda $17,144($30)
+ 	lda $18,10($31)
+ 	stb $31,0($0)
+ 	jsr $26,($27),simple_strtoul		!lituse_jsr!7
+ 	ldah $29,0($26)		!gpdisp!8
+ 	ldq $1,144($30)
+ 	lda $29,0($29)		!gpdisp!8
+ 	addl $31,$0,$0
+ 	ldbu $2,0($1)
+ 	bne $2,$L174
+ 	cmplt $12,$0,$1
+ 	addl $13,$12,$0
+ 	bne $1,$L171
+ 	br $31,$L174
+ 	.end try_name
+ 	.section	.rodata.str1.1
+ $LC3:
+ 	.ascii "/sys\0"
+ $LC4:
+ 	.ascii "sysfs\0"
+ $LC5:
+ 	.ascii "/dev/\0"
+ $LC6:
+ 	.ascii "nfs\0"
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.globl name_to_dev_t
+ 	.ent name_to_dev_t
+ name_to_dev_t:
+ 	.frame $30,96,$26,0
+ 	.mask 0x4001e00,-96
+ 	ldah $29,0($27)		!gpdisp!27
+ 	lda $29,0($29)		!gpdisp!27
+ $name_to_dev_t..ng:
+ 	lda $30,-96($30)
+ 	ldq $27,sys_mkdir($29)		!literal!46
+ 	lda $17,448($31)
+ 	stq $12,32($30)
+ 	stq $9,8($30)
+ 	ldah $12,$LC3($29)		!gprelhigh
+ 	lda $9,$LC3($12)		!gprellow
+ 	stq $10,16($30)
+ 	stq $11,24($30)
+ 	mov $16,$10
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	mov $31,$11
+ 	mov $9,$16
+ 	jsr $26,($27),sys_mkdir		!lituse_jsr!46
+ 	ldah $29,0($26)		!gpdisp!47
+ 	lda $29,0($29)		!gpdisp!47
+ 	mov $9,$17
+ 	mov $31,$19
+ 	mov $31,$20
+ 	ldah $16,$LC4($29)		!gprelhigh
+ 	ldq $27,sys_mount($29)		!literal!44
+ 	lda $16,$LC4($16)		!gprellow
+ 	mov $16,$18
+ 	jsr $26,($27),sys_mount		!lituse_jsr!44
+ 	ldah $29,0($26)		!gpdisp!45
+ 	lda $29,0($29)		!gpdisp!45
+ 	blt $0,$L192
+ 	ldq $27,memcmp($29)		!literal!42
+ 	ldah $17,$LC5($29)		!gprelhigh
+ 	mov $10,$16
+ 	lda $18,5($31)
+ 	lda $17,$LC5($17)		!gprellow
+ 	jsr $26,($27),memcmp		!lituse_jsr!42
+ 	ldah $29,0($26)		!gpdisp!43
+ 	lda $29,0($29)		!gpdisp!43
+ 	bne $0,$L219
+ 	ldq $27,memcmp($29)		!literal!38
+ 	lda $10,5($10)
+ 	ldah $17,$LC6($29)		!gprelhigh
+ 	lda $18,4($31)
+ 	lda $11,255($31)
+ 	mov $10,$16
+ 	lda $17,$LC6($17)		!gprellow
+ 	jsr $26,($27),memcmp		!lituse_jsr!38
+ 	ldah $29,0($26)		!gpdisp!39
+ 	lda $29,0($29)		!gpdisp!39
+ 	beq $0,$L196
+ 	ldq $27,strlen($29)		!literal!36
+ 	mov $10,$16
+ 	jsr $26,($27),strlen		!lituse_jsr!36
+ 	ldah $29,0($26)		!gpdisp!37
+ 	cmpule $0,31,$0
+ 	lda $29,0($29)		!gpdisp!37
+ 	beq $0,$L195
+ 	ldq $27,strcpy($29)		!literal!34
+ 	mov $10,$17
+ 	lda $16,48($30)
+ 	jsr $26,($27),strcpy		!lituse_jsr!34
+ 	ldah $29,0($26)		!gpdisp!35
+ 	ldbu $1,48($30)
+ 	lda $16,48($30)
+ 	lda $29,0($29)		!gpdisp!35
+ 	mov $16,$2
+ 	stq $16,80($30)
+ 	beq $1,$L217
+ 	lda $3,46($31)
+ 	.align 4
+ $L204:
+ 	ldbu $1,0($2)
+ 	cmpeq $1,47,$1
+ 	bne $1,$L220
+ $L201:
+ 	lda $16,1($16)
+ 	stq $16,80($30)
+ 	mov $16,$2
+ 	ldbu $1,0($16)
+ 	bne $1,$L204
+ $L217:
+ 	lda $16,48($30)
+ 	mov $31,$17
+ 	bsr $26,try_name		!samegp
+ 	addl $31,$0,$11
+ 	bne $11,$L196
+ 	ldq $16,80($30)
+ 	lda $2,48($30)
+ 	cmpule $16,$2,$1
+ 	mov $16,$3
+ 	bne $1,$L207
+ 	ldq $4,_ctype($29)		!literal
+ 	ldbu $1,-1($16)
+ 	addq $1,$4,$1
+ 	ldbu $2,0($1)
+ 	and $2,4,$2
+ 	beq $2,$L207
+ 	.align 4
+ $L210:
+ 	lda $16,-1($3)
+ 	lda $2,48($30)
+ 	cmpule $16,$2,$1
+ 	stq $16,80($30)
+ 	mov $16,$3
+ 	bne $1,$L207
+ 	ldbu $1,-1($16)
+ 	addq $1,$4,$1
+ 	ldbu $2,0($1)
+ 	and $2,4,$2
+ 	bne $2,$L210
+ 	.align 4
+ $L207:
+ 	lda $2,48($30)
+ 	cmpeq $16,$2,$1
+ 	bne $1,$L195
+ 	ldbu $1,0($16)
+ 	sextb $1,$1
+ 	beq $1,$L195
+ 	cmpeq $1,48,$1
+ 	bne $1,$L195
+ 	ldq $27,simple_strtoul($29)		!literal!32
+ 	mov $31,$17
+ 	lda $18,10($31)
+ 	jsr $26,($27),simple_strtoul		!lituse_jsr!32
+ 	ldah $29,0($26)		!gpdisp!33
+ 	ldq $1,80($30)
+ 	addl $31,$0,$9
+ 	lda $29,0($29)		!gpdisp!33
+ 	lda $16,48($30)
+ 	mov $9,$17
+ 	stb $31,0($1)
+ 	bsr $26,try_name		!samegp
+ 	addl $31,$0,$11
+ 	bne $11,$L196
+ 	ldq $4,80($30)
+ 	lda $1,50($30)
+ 	cmpult $4,$1,$1
+ 	bne $1,$L195
+ 	ldbu $1,-2($4)
+ 	ldq $3,_ctype($29)		!literal
+ 	addq $1,$3,$1
+ 	ldbu $2,0($1)
+ 	and $2,4,$2
+ 	beq $2,$L195
+ 	ldbu $1,-1($4)
+ 	cmpeq $1,112,$1
+ 	bne $1,$L221
+ 	.align 4
+ $L195:
+ 	mov $31,$11
+ $L196:
+ 	ldq $27,sys_umount($29)		!literal!30
+ 	lda $16,$LC3($12)		!gprellow
+ 	mov $31,$17
+ 	jsr $26,($27),sys_umount		!lituse_jsr!30
+ 	ldah $29,0($26)		!gpdisp!31
+ 	lda $29,0($29)		!gpdisp!31
+ $L192:
+ 	ldq $27,sys_rmdir($29)		!literal!28
+ 	lda $16,$LC3($12)		!gprellow
+ 	jsr $26,($27),sys_rmdir		!lituse_jsr!28
+ 	ldah $29,0($26)		!gpdisp!29
+ 	mov $11,$0
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	lda $29,0($29)		!gpdisp!29
+ 	ldq $10,16($30)
+ 	ldq $11,24($30)
+ 	ldq $12,32($30)
+ 	lda $30,96($30)
+ 	ret $31,($26),1
+ $L221:
+ 	stb $31,-1($4)
+ 	mov $9,$17
+ 	lda $16,48($30)
+ 	bsr $26,try_name		!samegp
+ 	addl $31,$0,$11
+ 	br $31,$L196
+ 	.align 4
+ $L220:
+ 	stb $3,0($2)
+ 	ldq $16,80($30)
+ 	br $31,$L201
+ 	.align 4
+ $L219:
+ 	ldq $27,simple_strtoul($29)		!literal!40
+ 	mov $10,$16
+ 	lda $17,80($30)
+ 	lda $18,16($31)
+ 	jsr $26,($27),simple_strtoul		!lituse_jsr!40
+ 	ldah $29,0($26)		!gpdisp!41
+ 	ldq $1,80($30)
+ 	lda $29,0($29)		!gpdisp!41
+ 	addl $31,$0,$11
+ 	ldbu $2,0($1)
+ 	beq $2,$L196
+ 	br $31,$L195
+ 	.end name_to_dev_t
+ 	.align 2
+ 	.align 4
+ 	.ent root_dev_setup
+ root_dev_setup:
+ 	.frame $30,16,$26,0
+ 	.mask 0x4000200,-16
+ 	ldah $29,0($27)		!gpdisp!48
+ 	lda $29,0($29)		!gpdisp!48
+ $root_dev_setup..ng:
+ 	lda $30,-16($30)
+ 	ldq $27,strncpy($29)		!literal!49
+ 	mov $16,$17
+ 	lda $18,64($31)
+ 	stq $9,8($30)
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	ldah $9,saved_root_name($29)		!gprelhigh
+ 	lda $9,saved_root_name($9)		!gprellow
+ 	mov $9,$16
+ 	jsr $26,($27),strncpy		!lituse_jsr!49
+ 	ldah $29,0($26)		!gpdisp!50
+ 	stb $31,63($9)
+ 	lda $0,1($31)
+ 	lda $29,0($29)		!gpdisp!50
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	lda $30,16($30)
+ 	ret $31,($26),1
+ 	.end root_dev_setup
+ 	.section	.init.data
+ 	.type	__setup_str_root_dev_setup, @object
+ 	.size	__setup_str_root_dev_setup, 6
+ __setup_str_root_dev_setup:
+ 	.ascii "root=\0"
+ 	.section	.init.setup
+ 	.align 3
+ 	.type	__setup_root_dev_setup, @object
+ 	.size	__setup_root_dev_setup, 16
+ __setup_root_dev_setup:
+ 	.quad	__setup_str_root_dev_setup
+ 	.quad	root_dev_setup
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent root_data_setup
+ root_data_setup:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!51
+ 	lda $29,0($29)		!gpdisp!51
+ $root_data_setup..ng:
+ 	.prologue 1
+ 	ldah $1,root_mount_data($29)		!gprelhigh
+ 	lda $0,1($31)
+ 	stq $16,root_mount_data($1)		!gprellow
+ 	ret $31,($26),1
+ 	.end root_data_setup
+ 	.align 2
+ 	.align 4
+ 	.ent fs_names_setup
+ fs_names_setup:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!52
+ 	lda $29,0($29)		!gpdisp!52
+ $fs_names_setup..ng:
+ 	.prologue 1
+ 	ldah $1,root_fs_names($29)		!gprelhigh
+ 	lda $0,1($31)
+ 	stq $16,root_fs_names($1)		!gprellow
+ 	ret $31,($26),1
+ 	.end fs_names_setup
+ 	.section	.init.data
+ 	.type	__setup_str_root_data_setup, @object
+ 	.size	__setup_str_root_data_setup, 11
+ __setup_str_root_data_setup:
+ 	.ascii "rootflags=\0"
+ 	.section	.init.setup
+ 	.align 3
+ 	.type	__setup_root_data_setup, @object
+ 	.size	__setup_root_data_setup, 16
+ __setup_root_data_setup:
+ 	.quad	__setup_str_root_data_setup
+ 	.quad	root_data_setup
+ 	.section	.init.data
+ 	.type	__setup_str_fs_names_setup, @object
+ 	.size	__setup_str_fs_names_setup, 12
+ __setup_str_fs_names_setup:
+ 	.ascii "rootfstype=\0"
+ 	.section	.init.setup
+ 	.align 3
+ 	.type	__setup_fs_names_setup, @object
+ 	.size	__setup_fs_names_setup, 16
+ __setup_fs_names_setup:
+ 	.quad	__setup_str_fs_names_setup
+ 	.quad	fs_names_setup
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent get_fs_names
+ get_fs_names:
+ 	.frame $30,32,$26,0
+ 	.mask 0x4000600,-32
+ 	ldah $29,0($27)		!gpdisp!53
+ 	lda $29,0($29)		!gpdisp!53
+ $get_fs_names..ng:
+ 	ldah $1,root_fs_names($29)		!gprelhigh
+ 	lda $30,-32($30)
+ 	ldq $17,root_fs_names($1)		!gprellow
+ 	stq $10,16($30)
+ 	mov $16,$10
+ 	stq $26,0($30)
+ 	stq $9,8($30)
+ 	.prologue 1
+ 	beq $17,$L226
+ 	ldq $27,strcpy($29)		!literal!58
+ 	jsr $26,($27),strcpy		!lituse_jsr!58
+ 	ldah $29,0($26)		!gpdisp!59
+ 	ldbu $1,0($10)
+ 	lda $29,0($29)		!gpdisp!59
+ 	lda $10,1($10)
+ 	beq $1,$L232
+ 	.align 4
+ $L231:
+ 	ldbu $1,-1($10)
+ 	cmpeq $1,44,$1
+ 	bne $1,$L245
+ $L227:
+ 	ldbu $1,0($10)
+ 	lda $10,1($10)
+ 	bne $1,$L231
+ 	.align 4
+ $L232:
+ 	stb $31,0($10)
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	ldq $10,16($30)
+ 	lda $30,32($30)
+ 	ret $31,($26),1
+ 	.align 4
+ $L245:
+ 	stb $31,-1($10)
+ 	br $31,$L227
+ $L226:
+ 	ldq $27,get_filesystem_list($29)		!literal!56
+ 	jsr $26,($27),get_filesystem_list		!lituse_jsr!56
+ 	ldah $29,0($26)		!gpdisp!57
+ 	addq $10,$0,$0
+ 	lda $9,-1($10)
+ 	lda $29,0($29)		!gpdisp!57
+ 	stb $31,0($0)
+ 	beq $9,$L232
+ 	.align 4
+ $L241:
+ 	ldq $27,strchr($29)		!literal!54
+ 	lda $9,1($9)
+ 	lda $17,10($31)
+ 	mov $9,$16
+ 	jsr $26,($27),strchr		!lituse_jsr!54
+ 	ldah $29,0($26)		!gpdisp!55
+ 	ldbu $1,0($9)
+ 	lda $29,0($29)		!gpdisp!55
+ 	lda $9,1($9)
+ 	cmpeq $1,9,$1
+ 	bne $1,$L238
+ $L235:
+ 	mov $0,$9
+ 	bne $0,$L241
+ 	br $31,$L232
+ 	.align 4
+ $L238:
+ 	ldbu $1,0($9)
+ 	lda $9,1($9)
+ 	cmpeq $1,10,$2
+ 	stb $1,0($10)
+ 	lda $10,1($10)
+ 	beq $2,$L238
+ 	stb $31,-1($10)
+ 	br $31,$L235
+ 	.end get_fs_names
+ 	.section	.rodata.str1.1
+ $LC7:
+ 	.ascii "/root\0"
+ $LC8:
+ 	.ascii "VFS: Cannot open root device \"%s\" or %s\12\0"
+ $LC9:
+ 	.ascii "Please append a correct \"root=\" boot option\12\0"
+ $LC10:
+ 	.ascii "VFS: Unable to mount root fs on %s\0"
+ $LC12:
+ 	.ascii " readonly\0"
+ $LC13:
+ 	.ascii "\0"
+ $LC11:
+ 	.ascii "VFS: Mounted root (%s filesystem)%s.\12\0"
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent mount_block_root
+ mount_block_root:
+ 	.frame $30,64,$26,0
+ 	.mask 0x400fe00,-64
+ 	ldah $29,0($27)		!gpdisp!60
+ 	lda $29,0($29)		!gpdisp!60
+ $mount_block_root..ng:
+ 	ldq $1,names_cachep($29)		!literal
+ 	lda $30,-64($30)
+ 	ldq $27,kmem_cache_alloc($29)		!literal!82
+ 	stq $12,32($30)
+ 	stq $11,24($30)
+ 	mov $16,$12
+ 	mov $17,$11
+ 	stq $26,0($30)
+ 	stq $9,8($30)
+ 	lda $17,464($31)
+ 	ldq $16,0($1)
+ 	stq $10,16($30)
+ 	stq $13,40($30)
+ 	stq $14,48($30)
+ 	stq $15,56($30)
+ 	.prologue 1
+ 	jsr $26,($27),kmem_cache_alloc		!lituse_jsr!82
+ 	ldah $29,0($26)		!gpdisp!83
+ 	lda $29,0($29)		!gpdisp!83
+ 	mov $0,$16
+ 	mov $0,$10
+ 	bsr $26,get_fs_names		!samegp
+ $L247:
+ 	ldbu $1,0($10)
+ 	mov $10,$9
+ 	beq $1,$L267
+ 	ldah $1,$LC7($29)		!gprelhigh
+ 	ldah $13,root_mount_data($29)		!gprelhigh
+ 	ldq $15,ROOT_DEV($29)		!literal
+ 	lda $14,$LC7($1)		!gprellow
+ $L262:
+ 	ldq $20,root_mount_data($13)		!gprellow
+ 	ldq $27,sys_mount($29)		!literal!80
+ 	mov $9,$18
+ 	mov $12,$16
+ 	mov $14,$17
+ 	mov $11,$19
+ 	jsr $26,($27),sys_mount		!lituse_jsr!80
+ 	ldah $29,0($26)		!gpdisp!81
+ 	addl $31,$0,$0
+ 	lda $29,0($29)		!gpdisp!81
+ 	mov $9,$16
+ 	lda $1,13($0)
+ 	lda $2,22($0)
+ 	beq $1,$L255
+ 	bgt $1,$L259
+ 	beq $2,$L250
+ $L252:
+ 	ldl $1,0($15)
+ 	ldq $27,kdevname($29)		!literal!78
+ 	bis $31,$1,$16
+ 	jsr $26,($27),kdevname		!lituse_jsr!78
+ 	ldah $29,0($26)		!gpdisp!79
+ 	lda $29,0($29)		!gpdisp!79
+ 	mov $0,$18
+ 	ldq $27,printk($29)		!literal!76
+ 	ldah $17,root_device_name($29)		!gprelhigh
+ 	ldah $16,$LC8($29)		!gprelhigh
+ 	lda $17,root_device_name($17)		!gprellow
+ 	lda $16,$LC8($16)		!gprellow
+ 	jsr $26,($27),printk		!lituse_jsr!76
+ 	ldah $29,0($26)		!gpdisp!77
+ 	lda $29,0($29)		!gpdisp!77
+ 	ldq $27,printk($29)		!literal!74
+ 	ldah $16,$LC9($29)		!gprelhigh
+ 	lda $16,$LC9($16)		!gprellow
+ 	jsr $26,($27),printk		!lituse_jsr!74
+ 	ldah $29,0($26)		!gpdisp!75
+ 	lda $29,0($29)		!gpdisp!75
+ 	ldl $1,0($15)
+ 	ldq $27,kdevname($29)		!literal!72
+ 	bis $31,$1,$16
+ 	jsr $26,($27),kdevname		!lituse_jsr!72
+ 	ldah $29,0($26)		!gpdisp!73
+ 	lda $29,0($29)		!gpdisp!73
+ $L269:
+ 	mov $0,$17
+ 	ldah $16,$LC10($29)		!gprelhigh
+ 	lda $16,$LC10($16)		!gprellow
+ 	ldq $27,panic($29)		!literal!67
+ 	jsr $26,($27),panic		!lituse_jsr!67
+ 	.align 4
+ $L250:
+ 	ldq $27,strlen($29)		!literal!70
+ 	jsr $26,($27),strlen		!lituse_jsr!70
+ 	ldah $29,0($26)		!gpdisp!71
+ 	addq $9,$0,$0
+ 	lda $29,0($29)		!gpdisp!71
+ 	ldbu $1,1($0)
+ 	lda $9,1($0)
+ 	bne $1,$L262
+ $L267:
+ 	ldq $1,ROOT_DEV($29)		!literal
+ 	ldq $27,kdevname($29)		!literal!68
+ 	ldl $2,0($1)
+ 	bis $31,$2,$16
+ 	jsr $26,($27),kdevname		!lituse_jsr!68
+ 	ldah $29,0($26)		!gpdisp!69
+ 	lda $29,0($29)		!gpdisp!69
+ 	br $31,$L269
+ $L259:
+ 	bne $0,$L252
+ $L254:
+ 	ldq $1,names_cachep($29)		!literal
+ 	ldq $27,kmem_cache_free($29)		!literal!65
+ 	mov $10,$17
+ 	ldq $16,0($1)
+ 	jsr $26,($27),kmem_cache_free		!lituse_jsr!65
+ 	ldah $29,0($26)		!gpdisp!66
+ 	lda $29,0($29)		!gpdisp!66
+ 	mov $14,$16
+ 	ldq $27,sys_chdir($29)		!literal!63
+ 	jsr $26,($27),sys_chdir		!lituse_jsr!63
+ 	ldah $29,0($26)		!gpdisp!64
+ 	ldq $4,64($8)
+ 	lda $29,0($29)		!gpdisp!64
+ 	ldah $1,$LC12($29)		!gprelhigh
+ 	lda $18,$LC12($1)		!gprellow
+ 	ldq $2,1264($4)
+ 	ldq $3,40($2)
+ 	ldq $2,ROOT_DEV($29)		!literal
+ 	ldq $1,40($3)
+ 	ldl $3,16($1)
+ 	ldq $4,56($1)
+ 	ldq $5,96($1)
+ 	stl $3,0($2)
+ 	ldq $17,0($4)
+ 	blbs $5,$L265
+ 	ldah $1,$LC13($29)		!gprelhigh
+ 	lda $18,$LC13($1)		!gprellow
+ $L265:
+ 	ldq $27,printk($29)		!literal!61
+ 	ldah $16,$LC11($29)		!gprelhigh
+ 	lda $16,$LC11($16)		!gprellow
+ 	jsr $26,($27),printk		!lituse_jsr!61
+ 	ldah $29,0($26)		!gpdisp!62
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	lda $29,0($29)		!gpdisp!62
+ 	ldq $10,16($30)
+ 	ldq $11,24($30)
+ 	ldq $12,32($30)
+ 	ldq $13,40($30)
+ 	ldq $14,48($30)
+ 	ldq $15,56($30)
+ 	lda $30,64($30)
+ 	ret $31,($26),1
+ $L255:
+ 	bis $11,1,$11
+ 	br $31,$L247
+ 	.end mount_block_root
+ 	.align 2
+ 	.align 4
+ 	.ent create_dev
+ create_dev:
+ 	.frame $30,96,$26,0
+ 	.mask 0x4000600,-96
+ 	ldah $29,0($27)		!gpdisp!84
+ 	lda $29,0($29)		!gpdisp!84
+ $create_dev..ng:
+ 	ldq $27,sys_unlink($29)		!literal!87
+ 	lda $30,-96($30)
+ 	stq $9,8($30)
+ 	stq $10,16($30)
+ 	mov $16,$9
+ 	mov $17,$10
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	jsr $26,($27),sys_unlink		!lituse_jsr!87
+ 	ldah $29,0($26)		!gpdisp!88
+ 	lda $29,0($29)		!gpdisp!88
+ 	lda $0,-1($31)
+ 	mov $9,$16
+ 	mov $10,$18
+ 	ldl $1,do_devfs($29)		!gprel
+ 	lda $17,24960($31)
+ 	beq $1,$L280
+ $L270:
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	ldq $10,16($30)
+ 	lda $30,96($30)
+ 	ret $31,($26),1
+ 	.align 4
+ $L280:
+ 	ldq $27,sys_mknod($29)		!literal!85
+ 	jsr $26,($27),sys_mknod		!lituse_jsr!85
+ 	ldah $29,0($26)		!gpdisp!86
+ 	lda $29,0($29)		!gpdisp!86
+ 	addl $31,$0,$0
+ 	br $31,$L270
+ 	.end create_dev
+ 	.align 2
+ 	.align 4
+ 	.ent rd_load_image
+ $rd_load_image..ng:
+ rd_load_image:
+ 	.frame $30,0,$26,0
+ 	.prologue 0
+ 	mov $31,$0
+ 	ret $31,($26),1
+ 	.end rd_load_image
+ 	.section	.rodata.str1.1
+ $LC14:
+ 	.ascii "/dev/root\0"
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent rd_load_disk
+ rd_load_disk:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!89
+ 	lda $29,0($29)		!gpdisp!89
+ $rd_load_disk..ng:
+ 	.prologue 1
+ 	ldah $16,$LC14($29)		!gprelhigh
+ 	lda $16,$LC14($16)		!gprellow
+ 	br $31,rd_load_image		!samegp
+ 	.end rd_load_disk
+ 	.align 2
+ 	.align 4
+ 	.ent mount_root
+ mount_root:
+ 	.frame $30,16,$26,0
+ 	.mask 0x4000200,-16
+ 	ldah $29,0($27)		!gpdisp!90
+ 	lda $29,0($29)		!gpdisp!90
+ $mount_root..ng:
+ 	ldq $1,ROOT_DEV($29)		!literal
+ 	lda $30,-16($30)
+ 	ldah $18,root_device_name($29)		!gprelhigh
+ 	stq $9,8($30)
+ 	lda $18,root_device_name($18)		!gprellow
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	ldah $9,$LC14($29)		!gprelhigh
+ 	lda $9,$LC14($9)		!gprellow
+ 	ldl $17,0($1)
+ 	mov $9,$16
+ 	bsr $26,create_dev		!samegp
+ 	ldq $26,0($30)
+ 	mov $9,$16
+ 	ldl $17,root_mountflags($29)		!gprel
+ 	ldq $9,8($30)
+ 	lda $30,16($30)
+ 	br $31,mount_block_root		!samegp
+ 	.end mount_root
+ 	.align 2
+ 	.align 4
+ 	.ent handle_initrd
+ $handle_initrd..ng:
+ handle_initrd:
+ 	.frame $30,0,$26,0
+ 	.prologue 0
+ 	ret $31,($26),1
+ 	.end handle_initrd
+ 	.section	.rodata.str1.1
+ $LC15:
+ 	.ascii "/dev/initrd\0"
+ 	.section	.init.text
+ 	.align 2
+ 	.align 4
+ 	.ent initrd_load
+ initrd_load:
+ 	.frame $30,0,$26,0
+ 	ldah $29,0($27)		!gpdisp!91
+ 	lda $29,0($29)		!gpdisp!91
+ $initrd_load..ng:
+ 	.prologue 1
+ 	ldah $16,$LC15($29)		!gprelhigh
+ 	lda $16,$LC15($16)		!gprellow
+ 	br $31,rd_load_image		!samegp
+ 	.end initrd_load
+ 	.section	.rodata.str1.1
+ $LC16:
+ 	.ascii "/dev\0"
+ $LC17:
+ 	.ascii ".\0"
+ $LC18:
+ 	.ascii "/\0"
+ 	.text
+ 	.align 2
+ 	.align 4
+ 	.globl prepare_namespace
+ 	.ent prepare_namespace
+ prepare_namespace:
+ 	.frame $30,32,$26,0
+ 	.mask 0x4000e00,-32
+ 	ldah $29,0($27)		!gpdisp!92
+ 	lda $29,0($29)		!gpdisp!92
+ $prepare_namespace..ng:
+ 	lda $30,-32($30)
+ 	stq $10,16($30)
+ 	stq $9,8($30)
+ 	ldah $9,saved_root_name($29)		!gprelhigh
+ 	ldq $10,ROOT_DEV($29)		!literal
+ 	stq $11,24($30)
+ 	stq $26,0($30)
+ 	.prologue 1
+ 	ldbu $2,saved_root_name($9)		!gprellow
+ 	ldl $1,0($10)
+ 	zapnot $1,15,$1
+ 	srl $1,8,$1
+ 	cmpeq $1,2,$11
+ 	bne $2,$L296
+ $L287:
+ 	ldl $17,0($10)
+ 	ldah $16,$LC14($29)		!gprelhigh
+ 	mov $31,$18
+ 	lda $16,$LC14($16)		!gprellow
+ 	bsr $26,create_dev		!samegp
+ 	ldah $1,mount_initrd($29)		!gprelhigh
+ 	ldl $2,mount_initrd($1)		!gprellow
+ 	beq $2,$L290
+ 	bsr $26,initrd_load		!samegp
+ 	beq $0,$L293
+ 	ldl $1,0($10)
+ 	lda $1,-256($1)
+ 	bne $1,$L297
+ 	.align 4
+ $L293:
+ 	bsr $26,mount_root		!samegp
+ $L292:
+ 	ldq $27,sys_umount($29)		!literal!98
+ 	ldah $16,$LC16($29)		!gprelhigh
+ 	mov $31,$17
+ 	lda $16,$LC16($16)		!gprellow
+ 	jsr $26,($27),sys_umount		!lituse_jsr!98
+ 	ldah $29,0($26)		!gpdisp!99
+ 	lda $29,0($29)		!gpdisp!99
+ 	mov $31,$18
+ 	lda $19,8192($31)
+ 	mov $31,$20
+ 	ldah $9,$LC17($29)		!gprelhigh
+ 	ldq $27,sys_mount($29)		!literal!96
+ 	ldah $17,$LC18($29)		!gprelhigh
+ 	lda $9,$LC17($9)		!gprellow
+ 	lda $17,$LC18($17)		!gprellow
+ 	mov $9,$16
+ 	jsr $26,($27),sys_mount		!lituse_jsr!96
+ 	ldah $29,0($26)		!gpdisp!97
+ 	lda $29,0($29)		!gpdisp!97
+ 	mov $9,$16
+ 	ldq $27,sys_chroot($29)		!literal!94
+ 	jsr $26,($27),sys_chroot		!lituse_jsr!94
+ 	ldah $29,0($26)		!gpdisp!95
+ 	lda $29,0($29)		!gpdisp!95
+ 	ldq $1,security_ops($29)		!literal
+ 	ldq $2,0($1)
+ 	ldq $27,184($2)
+ 	jsr $26,($27),0
+ 	ldah $29,0($26)		!gpdisp!93
+ 	ldq $26,0($30)
+ 	ldq $9,8($30)
+ 	lda $29,0($29)		!gpdisp!93
+ 	ldq $10,16($30)
+ 	ldq $11,24($30)
+ 	lda $30,32($30)
+ 	ret $31,($26),1
+ $L297:
+ 	bsr $26,handle_initrd		!samegp
+ 	br $31,$L292
+ 	.align 4
+ $L290:
+ 	beq $11,$L293
+ 	ldah $1,rd_doload($29)		!gprelhigh
+ 	ldl $2,rd_doload($1)		!gprellow
+ 	beq $2,$L293
+ 	mov $31,$16
+ 	bsr $26,rd_load_disk		!samegp
+ 	beq $0,$L293
+ 	lda $1,256($31)
+ 	stl $1,0($10)
+ 	br $31,$L293
+ 	.align 4
+ $L296:
+ 	lda $9,saved_root_name($9)		!gprellow
+ 	mov $9,$16
+ 	bsr $26,name_to_dev_t		!samegp
+ 	mov $9,$16
+ 	ldq $27,memcmp($29)		!literal!102
+ 	ldah $17,$LC5($29)		!gprelhigh
+ 	stl $0,0($10)
+ 	lda $18,5($31)
+ 	lda $17,$LC5($17)		!gprellow
+ 	jsr $26,($27),memcmp		!lituse_jsr!102
+ 	ldah $29,0($26)		!gpdisp!103
+ 	lda $29,0($29)		!gpdisp!103
+ 	lda $1,5($9)
+ 	cmoveq $0,$1,$9
+ 	ldq $27,strcpy($29)		!literal!100
+ 	ldah $16,root_device_name($29)		!gprelhigh
+ 	lda $16,root_device_name($16)		!gprellow
+ 	mov $9,$17
+ 	jsr $26,($27),strcpy		!lituse_jsr!100
+ 	ldah $29,0($26)		!gpdisp!101
+ 	lda $29,0($29)		!gpdisp!101
+ 	br $31,$L287
+ 	.end prepare_namespace
+ 	.comm	ROOT_DEV,4,4
+ 	.globl rd_doload
+ 	.section	.init.data
+ 	.align 2
+ 	.type	rd_doload, @object
+ 	.size	rd_doload, 4
+ rd_doload:
+ 	.zero	4
+ 	.section	.bss
+ 	.type	root_device_name, @object
+ 	.size	root_device_name, 64
+ root_device_name:
+ 	.zero	64
+ 	.type	saved_root_name, @object
+ 	.size	saved_root_name, 64
+ saved_root_name:
+ 	.zero	64
+ 	.section	.init.data
+ 	.align 3
+ 	.type	root_mount_data, @object
+ 	.size	root_mount_data, 8
+ root_mount_data:
+ 	.zero	8
+ 	.align 3
+ 	.type	root_fs_names, @object
+ 	.size	root_fs_names, 8
+ root_fs_names:
+ 	.zero	8
+ 	.ident	"GCC: (GNU) 3.3 20021103 (experimental)"


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