[Nix-dev] ldconfig problem with patchelf and 64-bit libs
Tim Crowder
timrc at alumni.caltech.edu
Wed May 5 23:18:17 CEST 2010
I'm using patchelf to add rpath to some libraries, both 32 and 64-bit.
They both seem to work with executables, but ldconfig complains about
the 64-bit lib:
/sbin/ldconfig: file ./liblwes64.so is truncated
I've looked at the section offsets and sizes, etc, and I didn't yet find
anything that
points past the end-of-file. Also, readelf hasn't complained about anything.
I'm including the file listing and some readelf output.
Any idea what might be wrong?
Let me know if there's any other info I can provide...
Thanks!
-timrc
=================================================================================
[crowdert at chiefredbull:lwes-rel4-64]ls -l
-rwxr-xr-x 1 crowdert 188976 May 4 17:19 liblwes64.so
[crowdert at chiefredbull:lwes-rel4-64]readelf -WhSl
liblwes64.so [~/work/pst/lwes/tmp/rpath]
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: DYN (Shared object file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4a50
Start of program headers: 184320 (bytes into file)
Start of section headers: 165352 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 6
Size of section headers: 64 (bytes)
Number of section headers: 37
Section header string table index: 32
Section Headers:
[Nr] Name Type Address Off Size
ES Flg Lk Inf Al
[ 0] NULL 0000000000000000 000000 000000
00 0 0 0
[ 1] .hash HASH 0000000000000158 000158 0006e8
04 A 2 0 8
[ 2] .dynsym DYNSYM 0000000000000840 000840 0016c8
18 A 36 13 8
[ 3] .gnu.version VERSYM 0000000000002e18 002e18 0001e6
02 A 2 0 2
[ 4] .gnu.version_r VERNEED 0000000000003000 003000 000030
00 A 36 1 8
[ 5] .rela.dyn RELA 0000000000003030 003030 000528
18 A 2 0 8
[ 6] .rela.plt RELA 0000000000003558 003558 000c78
18 A 2 8 8
[ 7] .init PROGBITS 00000000000041d0 0041d0 000018
00 AX 0 0 4
[ 8] .plt PROGBITS 00000000000041e8 0041e8 000860
10 AX 0 0 4
[ 9] .text PROGBITS 0000000000004a50 004a50 006578
00 AX 0 0 16
[10] .fini PROGBITS 000000000000afc8 00afc8 00000e
00 AX 0 0 4
[11] .rodata PROGBITS 000000000000afe0 00afe0 000e77
00 A 0 0 32
[12] .eh_frame_hdr PROGBITS 000000000000be58 00be58 00047c
00 A 0 0 4
[13] .eh_frame PROGBITS 000000000000c2d8 00c2d8 000ffc
00 A 0 0 8
[14] .ctors PROGBITS 000000000010d2d8 00d2d8 000010
00 WA 0 0 8
[15] .dtors PROGBITS 000000000010d2e8 00d2e8 000010
00 WA 0 0 8
[16] .jcr PROGBITS 000000000010d2f8 00d2f8 000008
00 WA 0 0 8
[17] .data.rel.ro PROGBITS 000000000010d300 00d300 000058
00 WA 0 0 8
[18] .got PROGBITS 000000000010d508 00d508 000140
08 WA 0 0 8
[19] .got.plt PROGBITS 000000000010d648 00d648 000440
08 WA 0 0 8
[20] .data PROGBITS 000000000010da88 00da88 000030
00 WA 0 0 8
[21] .bss NOBITS 000000000010dab8 00dab8 0000a0
00 WA 0 0 8
[22] .comment PROGBITS 0000000000000000 00dab8 0002b0
00 0 0 1
[23] .debug_aranges PROGBITS 0000000000000000 00dd68 0001e0
00 0 0 1
[24] .debug_pubnames PROGBITS 0000000000000000 00df48 001174
00 0 0 1
[25] .debug_info PROGBITS 0000000000000000 00f0bc 007bad
00 0 0 1
[26] .debug_abbrev PROGBITS 0000000000000000 016c69 001420
00 0 0 1
[27] .debug_line PROGBITS 0000000000000000 018089 001d0c
00 0 0 1
[28] .debug_frame PROGBITS 0000000000000000 019d98 0013c0
00 0 0 8
[29] .debug_str PROGBITS 0000000000000000 01b158 001cec
01 MS 0 0 1
[30] .debug_loc PROGBITS 0000000000000000 01ce44 00ace9
00 0 0 1
[31] .debug_ranges PROGBITS 0000000000000000 027b2d 000960
00 0 0 1
[32] .shstrtab STRTAB 0000000000000000 02848d 000154
00 0 0 1
[33] .symtab SYMTAB 0000000000000000 028f28 001ec0
18 34 98 8
[34] .strtab STRTAB 0000000000000000 02ade8 0014f3
00 0 0 1
[35] .dynamic DYNAMIC 000000000010e150 02d150 0001c0
10 WA 36 0 8
[36] .dynstr STRTAB 000000000010e310 02d310 000f1e
00 A 0 0 8
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
Program Headers:
Type Offset VirtAddr PhysAddr
FileSiz MemSiz Flg Align
LOAD 0x000000 0x0000000000000000 0x0000000000000000
0x00d2d4 0x00d2d4 R E 0x100000
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000
0x000000 0x000000 RW 0x8
GNU_EH_FRAME 0x00be58 0x000000000000be58 0x000000000000be58
0x00047c 0x00047c R 0x4
LOAD 0x00d2d8 0x000000000010d2d8 0x000000000010d2d8
0x0007e0 0x000880 RW 0x100000
LOAD 0x02d000 0x000000000010e000 0x000000000010e000
0x001230 0x001230 RW 0x1000
DYNAMIC 0x02d150 0x000000000010e150 0x000000000010e150
0x0001c0 0x0001c0 RW 0x8
Section to Segment mapping:
Segment Sections...
00 .hash .dynsym .gnu.version .gnu.version_r .rela.dyn .rela.plt
.init .plt .text .fini .rodata .eh_frame_hdr .eh_frame
01
02 .eh_frame_hdr
03 .ctors .dtors .jcr .data.rel.ro .got .got.plt .data .bss
04 .dynamic
05 .dynamic
More information about the nix-dev
mailing list