Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Evergreen:11.1:kernel-2.6.32
ltrace
ltrace.ppc32-c-option.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ltrace.ppc32-c-option.patch of Package ltrace
bug 201272 - LTC24809 without the patch: olaf@papaya:~> ltrace -c ./test32 % time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 100.00 0.000058 58 1 __gmon_start__ ------ ----------- ----------- --------- -------------------- 100.00 0.000058 1 total olaf@papaya:~> ltrace64 -c ./test64 % time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 100.00 0.000067 67 1 getcwd ------ ----------- ----------- --------- -------------------- 100.00 0.000067 1 total with the patch: olaf@papaya:~> ltrace -c ./test32 % time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 100.00 0.000062 62 1 getcwd ------ ----------- ----------- --------- -------------------- 100.00 0.000062 1 total olaf@papaya:~> ltrace64 -c ./test64 % time seconds usecs/call calls function ------ ----------- ----------- --------- -------------------- 100.00 0.000065 65 1 getcwd ------ ----------- ----------- --------- -------------------- 100.00 0.000065 1 total --- elf.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) --- a/elf.c +++ b/elf.c @@ -523,10 +523,17 @@ struct library_symbol *read_elf(struct p name = lte->dynstr + sym.st_name; if (in_load_libraries(name, lte)) { - addr = arch_plt_sym_val(lte, i, &rela); - add_library_symbol(addr, name, &library_symbols, - (PLTS_ARE_EXECUTABLE(lte) - ? LS_TOPLT_EXEC : LS_TOPLT_POINT), + enum toplt pltt; + if (lte->ehdr.e_machine == EM_PPC) { + addr = sym.st_value; + pltt = LS_TOPLT_EXEC; + } + else { + addr = arch_plt_sym_val(lte, i, &rela); + pltt = (PLTS_ARE_EXECUTABLE(lte) + ? LS_TOPLT_EXEC : LS_TOPLT_POINT); + } + add_library_symbol(addr, name, &library_symbols, pltt, ELF64_ST_BIND(sym.st_info) == STB_WEAK); if (!lib_tail) lib_tail = &(library_symbols->next);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor