[Nix-dev] ldconfig problem with patchelf and 64-bit libs

Lluís Batlle i Rossell viriketo at gmail.com
Thu May 6 16:50:54 CEST 2010


I used patchelf with x86_64 libraries, but I did not use ldconfig with them.
For what I tried, all worked.

Do those x86_64 libraries patchelf'ed fail *only* according to ldconfig?

On Wed, May 05, 2010 at 02:18:17PM -0700, Tim Crowder wrote:
> 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
> 
> 
> _______________________________________________
> nix-dev mailing list
> nix-dev at cs.uu.nl
> https://mail.cs.uu.nl/mailman/listinfo/nix-dev



More information about the nix-dev mailing list