diff options
author | Richard Henderson <rth@redhat.com> | 2002-11-07 00:42:19 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2002-11-07 00:42:19 +0000 |
commit | 66ba4c770bbb930da59fce9e0fb788333815332f (patch) | |
tree | 8b6803d6cd71c7a066c72e7f711ec3cd37148de9 /gas | |
parent | 0067822234fcb91d5f944857d619d0718540f271 (diff) | |
download | gdb-66ba4c770bbb930da59fce9e0fb788333815332f.zip gdb-66ba4c770bbb930da59fce9e0fb788333815332f.tar.gz gdb-66ba4c770bbb930da59fce9e0fb788333815332f.tar.bz2 |
* config/tc-alpha.c (alpha_validate_fix): Move code ...
(alpha_fix_adjustable): ... here.
* config/tc-alpha.h (TC_VALIDATE_FIX): Remove.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-alpha.c | 77 | ||||
-rw-r--r-- | gas/config/tc-alpha.h | 4 | ||||
-rw-r--r-- | gas/testsuite/gas/alpha/alpha.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/alpha/elf-reloc-8.d | 309 | ||||
-rw-r--r-- | gas/testsuite/gas/alpha/elf-reloc-8.s | 1119 |
6 files changed, 1468 insertions, 48 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 22113ae..6f79219 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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 diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c index 0dc875b..7c8a00d 100644 --- a/gas/config/tc-alpha.c +++ b/gas/config/tc-alpha.c @@ -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; } diff --git a/gas/config/tc-alpha.h b/gas/config/tc-alpha.h index 50e4389..e126413 100644 --- a/gas/config/tc-alpha.h +++ b/gas/config/tc-alpha.h @@ -49,16 +49,12 @@ 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 diff --git a/gas/testsuite/gas/alpha/alpha.exp b/gas/testsuite/gas/alpha/alpha.exp index f0ac515..3281dcb 100644 --- a/gas/testsuite/gas/alpha/alpha.exp +++ b/gas/testsuite/gas/alpha/alpha.exp @@ -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 index 0000000..e95e8ed --- /dev/null +++ b/gas/testsuite/gas/alpha/elf-reloc-8.d @@ -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 index 0000000..2c68fc5 --- /dev/null +++ b/gas/testsuite/gas/alpha/elf-reloc-8.s @@ -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)" |