From: PODOPLELOV Andrei <Andrei.PODOPLELOV@3ds.com>
To: "mtk.manpages@gmail.com" <mtk.manpages@gmail.com>
Cc: "linux-man@vger.kernel.org" <linux-man@vger.kernel.org>,
"alx.manpages@gmail.com" <alx.manpages@gmail.com>
Subject: [patch] --filter option in ld: srcfix
Date: Wed, 8 Dec 2021 17:32:36 +0000 [thread overview]
Message-ID: <64a06ee4b44648ccad3dfee1f3d1af1a@3ds.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 3661 bytes --]
Hello Michael,
First of all I should admit I am a big fan of your "The Linux Programming Interface" book. I've been Windows guy since mid-90th and your book helped me to become a local Linux expert.
Working recently on a bug in our product, happening on Ubuntu, but not on our official RHEL, I found that it caused by -filter option in ld. Unfortunately the description of this option in https://man7.org/linux/man-pages/man1/ld.1.html is not very clear and that delayed my resolution.
I was lucky to find https://docs.oracle.com/cd/E23824_01/html/819-0690/chapter4-4.html, containing a step-by-step sample, I played with, and figured how it all works. My final sample is attached.
In this change I want to emphasize the relationship between the two shared objects.
The current doc says:
--filter=name
When creating an ELF shared object, set the internal
DT_FILTER field to the specified name. This tells the
dynamic linker that the symbol table of the shared object
which is being created should be used as a filter on the
symbol table of the shared object name.
If you later link a program against this filter object, then,
when you run the program, the dynamic linker will see the
DT_FILTER field. The dynamic linker will resolve symbols
according to the symbol table of the filter object as usual,
but it will actually link to the definitions found in the
shared object name. Thus the filter object can be used to
select a subset of the symbols provided by the object name.
I believe it would be beneficial to change it to something like:
--filter=name
When creating an ELF shared object (a "filter"), set the
internal DT_FILTER field to the specified name - another
ELF shared object (a "filtee"). This tells the dynamic linker
that the symbol table of the "filter" should be used to
select a subset of the symbols provided by the "filtee".
When you link a program against this "filter" and run it,
the dynamic linker will see the DT_FILTER field and resolve
symbols according to the symbol table of the "filter" object
as usual. However, when a certain symbol of the "filter" is
also present in "filtee", it will actually link to the
definition in the "filtee".
Best Regards,
Andrei PODOPLELOV
Senior Software Architect - Customer Success, Spatial
Office: +1 508 305 5247
mailto:Andrei.PODOPLELOV@3ds.com
http://www.3ds.com/
Spatial Corp. | 310 Interlocken Parkway, Suite 200 | Broomfield, CO 80021 | United States
This email and any attachments are intended solely for the use of the individual or entity to whom it is addressed and may be confidential and/or privileged.
If you are not one of the named recipients or have received this email in error,
(i) you should not read, disclose, or copy it,
(ii) please notify sender of your receipt by reply email and delete this email and all attachments,
(iii) Dassault Systèmes does not accept or assume any liability or responsibility for any use of or reliance on this email.
Please be informed that your personal data are processed according to our data privacy policy as described on our website. Should you have any questions related to personal data protection, please contact 3DS Data Protection Officer at 3DS.compliance-privacy@3ds.com<mailto:3DS.compliance-privacy@3ds.com>
For other languages, go to https://www.3ds.com/terms/email-disclaimer
[-- Attachment #2: ld --filter option.zip --]
[-- Type: application/x-zip-compressed, Size: 924 bytes --]
next reply other threads:[~2021-12-08 17:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-08 17:32 PODOPLELOV Andrei [this message]
2021-12-08 20:07 ` [patch] --filter option in ld: srcfix Florian Weimer
2021-12-09 1:08 ` PODOPLELOV Andrei
2021-12-09 15:35 ` Florian Weimer
2021-12-09 16:32 ` PODOPLELOV Andrei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=64a06ee4b44648ccad3dfee1f3d1af1a@3ds.com \
--to=andrei.podoplelov@3ds.com \
--cc=alx.manpages@gmail.com \
--cc=linux-man@vger.kernel.org \
--cc=mtk.manpages@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox