From: anon@att.net
Subject: Project file version: was Re: Controlling the linking of shared libraries
Date: Sun, 24 Jul 2011 19:07:42 +0000 (UTC)
Date: 2011-07-24T19:07:42+00:00 [thread overview]
Message-ID: <j0hqht$upv$1@speranza.aioe.org> (raw)
In-Reply-To: 992cqbFm9mU1@mid.individual.net
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3543 bytes --]
Project file version:
for gnatmake or gpBuild
from the example directory use the following for shared lib
project Sa_Lib is
for Languages use ("Ada", "C");
for Source_Dirs use ("lib_src");
for Library_Dir use "lib3";
for Library_Kind use "dynamic";
for Library_Interface use ("ada_lib");
for Library_Name use "ada";
end Sa_Lib;
In <992cqbFm9mU1@mid.individual.net>, =?UTF-8?B?QmrDtnJu?= Persson <bjorn@xn--rombobjrn-67a.se> writes:
>I'll try to explain my problem in more detail and see if that makes it clear
>what I need.
>
>First, please note that I'm not talking about compiling a program and
>linking it to a shared library. I'm talking about compiling the shared
>library itself. When you build a shared library there is a linking phase
>where you take all the .o files you just compiled and combine them into a
>..so file (or a .dll file if you're in Windows land, but I'm in GNU land
>here). I want to pass some options to the linker to control some details in
>how it generates the .so file.
>
>Second, I'm writing this with my Fedora packager hat on. Packagers take
>programs and libraries that others have written and compile them into Fedora
>packages that the Fedora project distributes. Ideally we should be able to
>do this without modifying the upstream source code. Rather than writing
>custom patches for each and every package, we want to define a common set of
>command line parameters and/or environment variables that control how
>packages are built. In practice we often have to patch the upstream
>projects' build systems, as they arent written to be flexible enough, but
>the less we have to patch, and the more we can control the build with
>command line parameters and environment variables, the better.
>
>The Fedora project recently decided to start using a linker option called
>"relro" in all packages as a security measure. This means that we need to
>pass the command line parameter "-Wl,-z,relro" to gcc so that gcc will in
>turn pass "-z relro" to ld. This parameter is not to be used in the
>compilation phase, only in the linking phase when gcc is invoked as a linker
>driver. This was the first distribution-wide linker option that was defined
>in Fedora. Previously the common set of parameters contained only compiler
>options, used in the compilation phase.
>
>Now, some projects are built using makefiles and let the makefile handle the
>linking phase by invoking gcc directly. Those cases are not what I'm
>concerned over right now. Other projects have Gnat project files that
>control the whole build process, and in those cases I need to find a way to
>make Gnatmake or GPRbuild pass "-Wl,-z,relro" to gcc in the linking phase. I
>tried using "-largs -Wl,-z,relro" for this, and found that it has the
>desired effect when the project being built is a program. It does however
>not have any noticeable effect when the project being built is a shared
>library.
>
>According to the manual the attribute Library_Options can be used in project
>files to specify linker options, but as I explained above patching each and
>every project file is undesirable. Therefore I came here to ask you guys:
>Does anyone know how to pass command line parameters to Gnatmake and
>GPRbuild that they should forward to gcc when they invoke gcc as a linker
>driver to build a shared library, given that -largs is not the answer? A
>solution using environment variables might also be preferable to patching.
>
>--
>Björn Persson
>PGP key A88682FD
next prev parent reply other threads:[~2011-07-24 19:07 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-21 18:01 Controlling the linking of shared libraries Björn Persson
2011-07-21 23:14 ` anon
2011-07-22 6:36 ` Stephen Leake
2011-07-22 23:50 ` Simon Wright
2011-07-24 11:08 ` Björn Persson
2011-07-24 18:03 ` anon
2011-07-24 19:07 ` anon [this message]
2011-07-24 19:13 ` Simon Wright
2011-07-25 1:05 ` anon
2011-07-26 8:18 ` Björn Persson
2011-07-25 11:43 ` Stephen Leake
2011-07-25 12:06 ` Simon Wright
2011-07-25 12:29 ` Dmitry A. Kazakov
2011-07-26 8:19 ` Björn Persson
2011-07-28 10:18 ` Stephen Leake
2011-07-29 22:47 ` Vincent
2011-07-26 9:20 ` Vincent
2011-07-26 23:37 ` Björn Persson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox