Date: Mon, 19 Oct 2015 13:02:27 +0200 From: Szabolcs Nagy <nsz@...t70.net> To: musl@...ts.openwall.com Cc: Rich Felker <dalias@...c.org> Subject: Re: musl mips n64 dynamic build * Mahesh Bodapati <maheshbodapati90@...il.com> [2015-10-19 14:51:12 +0530]: > Hi Rich, > > I have ported musl libraries for MIPS n64 ABI architecture and I have setup > $gp as > > Crt1.s: > > *lui $3,%hi(%neg(%gp_rel(_start)))* > > * daddu > $3,$3,$25 /* same in dlsym.s > and pipe.s */* > > * daddiu $gp,$3,%lo(%neg(%gp_rel(_start)))* > > ld $4, %got_disp(main)($gp) # Get main() .. > > > > I didn???t setup $gp as in MIPS o32 ABI as we shouldn???t use _*gp*_disp for > setting up $gp > > ???The special symbol name _gp_disp, used for relocating the calculation of gp > on entry to a DSO in 32-bit files, is > > not supported in ELF-64 or in the new 32-bit ABI. Instead, these relocations > should be composed with > > R_MIPS_GPREL applied to an explicit symbol for the entry point of the > subprogram > > > > involves loading the difference between the entry > > address of a subprogram s and the runtime gp for establishing gp: > > A: lui rx, %hi(%neg(%gp_rel(s)))# load high part of diff > > B: daddiu rx, rx, %lo(%neg(%gp_rel(s)))# add low part > > C: dadd gp, t9, rx # add to entry address ??? > > > > Now I am able to build dynamic n64 musl libraries and n64 dynamic > application but it???s not showing any relocation with it > > and execution of application is giving errors like ???unsupported relocation > type errors??? > > $ objdump -R main > > > > a.out: file format elf64-tradbigmips > > > > DYNAMIC RELOCATION RECORDS (none) > > > > $ ./main > > Error relocating libc.so: unsupported relocation type 482431 > > Error relocating libc.so: unsupported relocation type 482687 > > Error relocating libc.so: unsupported relocation type 482943 > > Error relocating libc.so: unsupported relocation type 483199 > > ; note that these are in libc.so, not main and the numbers are incrementing by 256, so the last byte is unchanged 0x7f which means R_MIPS_JUMP_SLOT on o32 mips. maybe libc is built to load 64bit elf but itself is a 32bit elf? try inspecting readelf -aW of libc.so > > ; > > ; > > Segmentation fault > > > > So Can you suggest how can I resolve these errors? I am thinking like > either doing changes in do_mips_reloc(),do_relocs() functions in musl > sources or in usage of relocations. > > > > > > Thank You In Advance. > > > > Thanks, > > Mahesh
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.