* config/tc-alpha.c (alpha_validate_fix): Move code ...
authorRichard Henderson <rth@redhat.com>
Thu, 7 Nov 2002 00:42:19 +0000 (00:42 +0000)
committerRichard Henderson <rth@redhat.com>
Thu, 7 Nov 2002 00:42:19 +0000 (00:42 +0000)
        (alpha_fix_adjustable): ... here.
        * config/tc-alpha.h (TC_VALIDATE_FIX): Remove.

gas/ChangeLog
gas/config/tc-alpha.c
gas/config/tc-alpha.h
gas/testsuite/gas/alpha/alpha.exp
gas/testsuite/gas/alpha/elf-reloc-8.d [new file with mode: 0644]
gas/testsuite/gas/alpha/elf-reloc-8.s [new file with mode: 0644]

index 22113aef57a056dd5065101f6a47092021839c83..6f79219e25e1fea956a69a857daf590c452feb09 100644 (file)
@@ -1,3 +1,9 @@
+2002-11-06  Richard Henderson  <rth@redhat.com>
+
+       * config/tc-alpha.c (alpha_validate_fix): Move code ...
+       (alpha_fix_adjustable): ... here.
+       * config/tc-alpha.h (TC_VALIDATE_FIX): Remove.
+
 2002-11-07  Eric Kohl  <ekohl@rz-online.de> 
 
        * config/te-pe.h (LEX_AT): Accept at-sign (@) as first character
index 0dc875b2cf54dc63c38c793048dae904a91c02e9..7c8a00d3541d604add8d25f12c25bed5b1b4ea9e 100644 (file)
@@ -1419,49 +1419,6 @@ alpha_define_label (sym)
   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.  */
 
@@ -1521,7 +1478,6 @@ alpha_fix_adjustable (f)
     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:
@@ -1559,6 +1515,39 @@ alpha_fix_adjustable (f)
         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 50e4389492f9d3c63501dd749a952e1361bdd3e2..e126413df6e73c6ae7103e40308b954d2e22564d 100644 (file)
 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
index f0ac5158636d23ea4fc065f4073b914ae0780221..3281dcba9b9630fde5a2f246fbdccd5c4f63fac0 100644 (file)
@@ -30,6 +30,7 @@ if { [istarget alpha*-*-*] } then {
        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" ""
diff --git a/gas/testsuite/gas/alpha/elf-reloc-8.d b/gas/testsuite/gas/alpha/elf-reloc-8.d
new file mode 100644 (file)
index 0000000..e95e8ed
--- /dev/null
@@ -0,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
diff --git a/gas/testsuite/gas/alpha/elf-reloc-8.s b/gas/testsuite/gas/alpha/elf-reloc-8.s
new file mode 100644 (file)
index 0000000..2c68fc5
--- /dev/null
@@ -0,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)"