ports with no SONAME

Gleb Popov 6yearold at gmail.com
Mon Oct 30 16:45:18 UTC 2017


On Mon, Oct 30, 2017 at 7:17 PM, blubee blubeeme <gurenchan at gmail.com>
wrote:

> Can anyone help with this library. I ran objdump on it and got this output
> ----------------------------------------------
> objdump -x work/stage/usr/local/lib/libtogl.so
>
> work/stage/usr/local/lib/libtogl.so:     file format elf64-x86-64-freebsd
> work/stage/usr/local/lib/libtogl.so
> architecture: i386:x86-64, flags 0x00000150:
> HAS_SYMS, DYNAMIC, D_PAGED
> start address 0x0000000000002980
>
> Program Header:
>     LOAD off    0x0000000000000000 vaddr 0x0000000000000000 paddr
> 0x0000000000000000 align 2**21
>          filesz 0x00000000000070a8 memsz 0x00000000000070a8 flags r-x
>     LOAD off    0x00000000000070b0 vaddr 0x00000000002070b0 paddr
> 0x00000000002070b0 align 2**21
>          filesz 0x0000000000000a58 memsz 0x0000000000002a90 flags rw-
>  DYNAMIC off    0x00000000000070f0 vaddr 0x00000000002070f0 paddr
> 0x00000000002070f0 align 2**3
>          filesz 0x0000000000000150 memsz 0x0000000000000150 flags rw-
>    STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr
> 0x0000000000000000 align 2**3
>          filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
>
> Dynamic Section:
>   NEEDED      libX11.so.6
>   NEEDED      libGL.so.1
>   NEEDED      libXmu.so.6
>   HASH        0x120
>   STRTAB      0xe60
>   SYMTAB      0x458
>   STRSZ       0x60b
>   SYMENT      0x18
>   PLTGOT      0x207258
>   PLTRELSZ    0x558
>   PLTREL      0x7
>   JMPREL      0x2088
>   RELA        0x1470
>   RELASZ      0xc18
>   RELAENT     0x18
>   RELACOUNT   0x80
>
> Sections:
> Idx Name          Size      VMA               LMA               File off
>  Algn
>   0 .hash         00000338  0000000000000120  0000000000000120  00000120
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   1 .dynsym       00000a08  0000000000000458  0000000000000458  00000458
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   2 .dynstr       0000060b  0000000000000e60  0000000000000e60  00000e60
>  2**0
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   3 .rela.dyn     00000c18  0000000000001470  0000000000001470  00001470
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   4 .rela.plt     00000558  0000000000002088  0000000000002088  00002088
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   5 .plt          000003a0  00000000000025e0  00000000000025e0  000025e0
>  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   6 .text         0000350f  0000000000002980  0000000000002980  00002980
>  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>   7 .rodata       00000a6d  0000000000005e90  0000000000005e90  00005e90
>  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   8 .eh_frame     000007a8  0000000000006900  0000000000006900  00006900
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   9 .data.rel.ro  00000040  00000000002070b0  00000000002070b0  000070b0
>  2**4
>                   CONTENTS, ALLOC, LOAD, DATA
>  10 .dynamic      00000150  00000000002070f0  00000000002070f0  000070f0
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  11 .got          00000018  0000000000207240  0000000000207240  00007240
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  12 .got.plt      000001e0  0000000000207258  0000000000207258  00007258
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  13 .data         000006c8  0000000000207440  0000000000207440  00007440
>  2**4
>                   CONTENTS, ALLOC, LOAD, DATA
>  14 .bss          00002030  0000000000207b10  0000000000207b10  00007b08
>  2**4
>                   ALLOC
>  15 .comment      00000055  0000000000000000  0000000000000000  00007b08
>  2**0
>                   CONTENTS, READONLY
> SYMBOL TABLE:
> no symbols
>
> running the same code on libjpeg i see the SONAME field.
>
>  objdump -x /usr/local/lib/libjpeg.so
>
> /usr/local/lib/libjpeg.so:     file format elf64-x86-64-freebsd
> /usr/local/lib/libjpeg.so
> architecture: i386:x86-64, flags 0x00000150:
> HAS_SYMS, DYNAMIC, D_PAGED
> start address 0x0000000000004860
>
> Program Header:
>     LOAD off    0x0000000000000000 vaddr 0x0000000000000000 paddr
> 0x0000000000000000 align 2**21
>          filesz 0x000000000007094c memsz 0x000000000007094c flags r-x
>     LOAD off    0x0000000000071000 vaddr 0x0000000000271000 paddr
> 0x0000000000271000 align 2**21
>          filesz 0x0000000000000c40 memsz 0x0000000000000c48 flags rw-
>  DYNAMIC off    0x00000000000715c0 vaddr 0x00000000002715c0 paddr
> 0x00000000002715c0 align 2**3
>          filesz 0x00000000000001c0 memsz 0x00000000000001c0 flags rw-
> EH_FRAME off    0x000000000006c8c0 vaddr 0x000000000006c8c0 paddr
> 0x000000000006c8c0 align 2**2
>          filesz 0x0000000000000bcc memsz 0x0000000000000bcc flags r--
>    STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr
> 0x0000000000000000 align 2**3
>          filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
>
> Dynamic Section:
>   NEEDED      libc.so.7
>   SONAME      libjpeg.so.8
>   INIT        0x4398
>   FINI        0x49388
>   HASH        0x158
>   GNU_HASH    0x5d8
>   STRTAB      0x18f8
>   SYMTAB      0xa88
>   STRSZ       0xa79
>   SYMENT      0x18
>   PLTGOT      0x2719c0
>   PLTRELSZ    0x6f0
>   PLTREL      0x7
>   JMPREL      0x3ca8
>   RELA        0x2520
>   RELASZ      0x1788
>   RELAENT     0x18
>   VERDEF      0x24a8
>   VERDEFNUM   0x3
>   VERNEED     0x2500
>   VERNEEDNUM  0x1
>   VERSYM      0x2372
>   RELACOUNT   0xdd
>
> Version definitions:
> 1 0x01 0x0cca1178 libjpeg.so.8
> 2 0x00 0x0939efd0 LIBJPEGTURBO_8.0
> 3 0x00 0x04cdfde0 LIBJPEG_8.0
>
> Version References:
>   required from libc.so.7:
>     0x077a28b0 0x00 04 FBSD_1.0
>
> Sections:
> Idx Name          Size      VMA               LMA               File off
>  Algn
>   0 .hash         0000047c  0000000000000158  0000000000000158  00000158
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   1 .gnu.hash     000004ac  00000000000005d8  00000000000005d8  000005d8
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   2 .dynsym       00000e70  0000000000000a88  0000000000000a88  00000a88
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   3 .dynstr       00000a79  00000000000018f8  00000000000018f8  000018f8
>  2**0
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   4 .gnu.version  00000134  0000000000002372  0000000000002372  00002372
>  2**1
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   5 .gnu.version_d 00000054  00000000000024a8  00000000000024a8  000024a8
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   6 .gnu.version_r 00000020  0000000000002500  0000000000002500  00002500
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   7 .rela.dyn     00001788  0000000000002520  0000000000002520  00002520
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   8 .rela.plt     000006f0  0000000000003ca8  0000000000003ca8  00003ca8
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>   9 .init         00000013  0000000000004398  0000000000004398  00004398
>  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  10 .plt          000004b0  00000000000043ac  00000000000043ac  000043ac
>  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  11 .text         00044b28  0000000000004860  0000000000004860  00004860
>  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  12 .fini         0000000e  0000000000049388  0000000000049388  00049388
>  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, CODE
>  13 .rodata       00023520  00000000000493a0  00000000000493a0  000493a0
>  2**4
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>  14 .eh_frame_hdr 00000bcc  000000000006c8c0  000000000006c8c0  0006c8c0
>  2**2
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>  15 .eh_frame     000034bc  000000000006d490  000000000006d490  0006d490
>  2**3
>                   CONTENTS, ALLOC, LOAD, READONLY, DATA
>  16 .ctors        00000010  0000000000271000  0000000000271000  00071000
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  17 .dtors        00000010  0000000000271010  0000000000271010  00071010
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  18 .jcr          00000008  0000000000271020  0000000000271020  00071020
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  19 .data.rel.ro  00000590  0000000000271030  0000000000271030  00071030
>  2**4
>                   CONTENTS, ALLOC, LOAD, DATA
>  20 .dynamic      000001c0  00000000002715c0  00000000002715c0  000715c0
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  21 .got          00000240  0000000000271780  0000000000271780  00071780
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  22 .got.plt      00000268  00000000002719c0  00000000002719c0  000719c0
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  23 .data         00000018  0000000000271c28  0000000000271c28  00071c28
>  2**3
>                   CONTENTS, ALLOC, LOAD, DATA
>  24 .bss          00000008  0000000000271c40  0000000000271c40  00071c40
>  2**2
>                   ALLOC
>  25 .comment      000000e1  0000000000000000  0000000000000000  00071c40
>  2**0
>                   CONTENTS, READONLY
> SYMBOL TABLE:
> no symbols
>
>
> How can I edit the makefile to add the soname to the lib?
>
> On Mon, Oct 30, 2017 at 11:52 PM, blubee blubeeme <gurenchan at gmail.com>
> wrote:
>
> > Seems like the soname issue has to do with the linker flags set during
> the
> > compilation process.
> >
> > On Mon, Oct 30, 2017 at 7:37 PM, blubee blubeeme <gurenchan at gmail.com>
> > wrote:
> >
> >> There's an unmaintained port [graphics/togl] that I need but doing
> >> stage-qa on my port it says this needed port has no SONAME.
> >>
> >> Since the togl is unmaintained I'll like to fix it. This port does a lot
> >> of stuff like this:
> >>
> >> # do-install:
> >> # @${MKDIR} ${STAGEDIR}${TOGL_INSTDIR}
> >> # .for i in togl.h togl_ws.h pkgIndex.tcl
> >> # ${INSTALL_DATA} ${WRKSRC}/${i} ${STAGEDIR}${TOGL_INSTDIR}
> >> # .endfor
> >> # ${INSTALL_LIB} ${WRKSRC}/libTogl1.7.so ${STAGEDIR}${TOGL_INSTDIR}
> >> # ${LN} -s libTogl1.7.so  ${STAGEDIR}${TOGL_INSTDIR}/libtogl.so.1
> >> # ${LN} -s ${TOGL_INSTDIR}/libTogl1.7.so  ${STAGEDIR}${PREFIX}/lib/libt
> >> ogl.so
> >> # ${LN} -s ${TOGL_INSTDIR}/libTogl1.7.so  ${STAGEDIR}${PREFIX}/lib/libt
> >> ogl.so.1
> >>
> >> # do-install-DOCS-on:
> >> # @${MKDIR} ${STAGEDIR}${DOCSDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/Togl.html ${STAGEDIR}${DOCSDIR}
> >>
> >> # do-install-EXAMPLES-on:
> >> # @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/Makefile ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/ben.rgb ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/double.c ${WRKSRC}/double.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/gears.c ${WRKSRC}/gears.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/image.c ${WRKSRC}/image.h
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/index.c ${WRKSRC}/index.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/overlay.c ${WRKSRC}/overlay.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/stereo.c ${WRKSRC}/stereo.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/texture.c ${WRKSRC}/texture.tcl
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/togl.c ${WRKSRC}/togl.h
> >> ${STAGEDIR}${EXAMPLESDIR}
> >> # ${INSTALL_DATA} ${WRKSRC}/tree2.rgba ${STAGEDIR}${EXAMPLESDIR}
> >>
> >> I think this is the reason it's not registering the SONAME because of
> >> those commands but I'm not sure.
> >>
> >> I ask because reading the porter handbook on installing ports there's a
> >> Makefile macro ${COPYTREE_SHARE} but there's a warning that using that
> >> macro doesn't add the files to pkg-plist, you have to manually do that.
> >>
> >> Anyways, that's a long way to say how can I rework this project to make
> >> sure all files are installed and registered properly?
> >>
> >
> >
> _______________________________________________
> freebsd-ports at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
>

-Wl,-soname,libfoo.so.0


More information about the freebsd-ports mailing list