* [devel] -fpic & -shared @ 2007-12-27 8:39 Максим Иванов 2007-12-27 8:44 ` Alexey Tourbin 0 siblings, 1 reply; 7+ messages in thread From: Максим Иванов @ 2007-12-27 8:39 UTC (permalink / raw) To: ALT Linux Team development discussions Когда собираем бинарник с опцией -shared (т.е. собираем .so), позволительно ли включать в него объектники скомпиленные без -fpic? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 8:39 [devel] -fpic & -shared Максим Иванов @ 2007-12-27 8:44 ` Alexey Tourbin 2007-12-27 9:02 ` Максим Иванов 0 siblings, 1 reply; 7+ messages in thread From: Alexey Tourbin @ 2007-12-27 8:44 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 209 bytes --] On Thu, Dec 27, 2007 at 11:39:57AM +0300, Максим Иванов wrote: > Когда собираем бинарник с опцией -shared (т.е. собираем .so), позволительно ли > включать в него объектники скомпиленные без -fpic? Нет. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 8:44 ` Alexey Tourbin @ 2007-12-27 9:02 ` Максим Иванов 2007-12-27 9:14 ` Alexey Tourbin 0 siblings, 1 reply; 7+ messages in thread From: Максим Иванов @ 2007-12-27 9:02 UTC (permalink / raw) To: ALT Linux Team development discussions В сообщении от Thursday 27 December 2007 11:44:30 Alexey Tourbin написал(а): > On Thu, Dec 27, 2007 at 11:39:57AM +0300, Максим Иванов wrote: > > Когда собираем бинарник с опцией -shared (т.е. собираем .so), > > позволительно ли включать в него объектники скомпиленные без -fpic? > > Нет. Где можно про это более конкретно почитать? Когда искал наткнулся вот на такое письмо http://sources.redhat.com/ml/glibc-linux/2000-q2/msg00066.html где впринципе утверждается обратное: "Indeed -fpic and -fPIC are not necessary for shared libraries to be used either by ld.so or libdl.so. Why? I have no idea... As long as you do -shared with gcc, you're golden." ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 9:02 ` Максим Иванов @ 2007-12-27 9:14 ` Alexey Tourbin 2007-12-27 9:26 ` Максим Иванов 0 siblings, 1 reply; 7+ messages in thread From: Alexey Tourbin @ 2007-12-27 9:14 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 811 bytes --] On Thu, Dec 27, 2007 at 12:02:51PM +0300, Максим Иванов wrote: > В сообщении от Thursday 27 December 2007 11:44:30 Alexey Tourbin написал(а): > > On Thu, Dec 27, 2007 at 11:39:57AM +0300, Максим Иванов wrote: > > > Когда собираем бинарник с опцией -shared (т.е. собираем .so), > > > позволительно ли включать в него объектники скомпиленные без -fpic? > > > > Нет. > > Где можно про это более конкретно почитать? Можно начать читать с glibc/elf/rtld.c. > Когда искал наткнулся вот на такое > письмо http://sources.redhat.com/ml/glibc-linux/2000-q2/msg00066.html где > впринципе утверждается обратное: > > "Indeed -fpic and -fPIC are not necessary for shared libraries to be used > either by ld.so or libdl.so. Why? I have no idea... As long as you do > -shared with gcc, you're golden." [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 9:14 ` Alexey Tourbin @ 2007-12-27 9:26 ` Максим Иванов 2007-12-27 9:54 ` Alexey Tourbin 0 siblings, 1 reply; 7+ messages in thread From: Максим Иванов @ 2007-12-27 9:26 UTC (permalink / raw) To: ALT Linux Team development discussions В сообщении от Thursday 27 December 2007 12:14:11 Alexey Tourbin написал(а): > > > > Когда собираем бинарник с опцией -shared (т.е. собираем .so), > > > > позволительно ли включать в него объектники скомпиленные без -fpic? > > > > > > Нет. > > > > Где можно про это более конкретно почитать? > > Можно начать читать с glibc/elf/rtld.c. Вам не кажется, что если бы я обладал квалификацией С программиста достаточной, чтобы разобраться в этом коде, то вопросов уровня "а с какими опциями можно компилировать библиотеки" у меня бы не возникало впринципе? ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 9:26 ` Максим Иванов @ 2007-12-27 9:54 ` Alexey Tourbin 2007-12-27 10:12 ` Alexey Tourbin 0 siblings, 1 reply; 7+ messages in thread From: Alexey Tourbin @ 2007-12-27 9:54 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 985 bytes --] On Thu, Dec 27, 2007 at 12:26:34PM +0300, Максим Иванов wrote: > В сообщении от Thursday 27 December 2007 12:14:11 Alexey Tourbin написал(а): > > > > > Когда собираем бинарник с опцией -shared (т.е. собираем .so), > > > > > позволительно ли включать в него объектники скомпиленные без -fpic? > > > > > > > > Нет. > > > > > > Где можно про это более конкретно почитать? > > > > Можно начать читать с glibc/elf/rtld.c. > > Вам не кажется, что если бы я обладал квалификацией С программиста > достаточной, чтобы разобраться в этом коде, то вопросов уровня "а с какими > опциями можно компилировать библиотеки" у меня бы не возникало впринципе? Можно ещё прочитать dsohowto.pdf. Если комплиировать *.o без -pic и компоновать -shared, то будут так называемые text relocations. i586 потенциально допускает text relocations, но в наш rpm-build встроена проверка, которая их не пропускает. На x86_64 вроде бы вообще нельзя делать text relocations в shared objects. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [devel] -fpic & -shared 2007-12-27 9:54 ` Alexey Tourbin @ 2007-12-27 10:12 ` Alexey Tourbin 0 siblings, 0 replies; 7+ messages in thread From: Alexey Tourbin @ 2007-12-27 10:12 UTC (permalink / raw) To: ALT Linux Team development discussions [-- Attachment #1: Type: text/plain, Size: 1178 bytes --] On Thu, Dec 27, 2007 at 12:54:20PM +0300, Alexey Tourbin wrote: > > Вам не кажется, что если бы я обладал квалификацией С программиста > > достаточной, чтобы разобраться в этом коде, то вопросов уровня "а с какими > > опциями можно компилировать библиотеки" у меня бы не возникало впринципе? > > Можно ещё прочитать dsohowto.pdf. Если комплиировать *.o без -pic и > компоновать -shared, то будут так называемые text relocations. На пальцах, это означает, что бинарный код библиотеки будет сформирован таким образом, что как бы "статические" адреса переходов прошиты в сам этот код. Посольку в виртуальную память процесса библиотека загружается по заранее неизвестному адресу, то это означает, что рантайм-линкер ld.so будет "по живому" править исполняемый код библиотеки (подменять адреса перехода по некоему смещению относительно адреса, куда загрузилась библиотека). При формировании бинарного кода через -pic создаётся дополнительный уровень косвенности переходов, так что линкеру нужно будет поправить адреса всего примерно "в одном месте". С исполняемыми файлами такой проблемы нет, поскольку они загружаются линкером по константному адресу. [-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2007-12-27 10:12 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-12-27 8:39 [devel] -fpic & -shared Максим Иванов 2007-12-27 8:44 ` Alexey Tourbin 2007-12-27 9:02 ` Максим Иванов 2007-12-27 9:14 ` Alexey Tourbin 2007-12-27 9:26 ` Максим Иванов 2007-12-27 9:54 ` Alexey Tourbin 2007-12-27 10:12 ` Alexey Tourbin
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git