Error in documentation of $ORIGIN in the ld.so man page

Message ID 20141009181952.GD4197@redhat.com
State Not applicable
Headers

Commit Message

Jonathan Wakely Oct. 9, 2014, 6:19 p.m. UTC
  On 09/10/14 23:18 +0530, Siddhesh Poyarekar wrote:
>Hi Michael,
>
>The ld.so man page says:
>
>       $ORIGIN (or equivalently ${ORIGIN})
>              This expands to the directory containing the application
>executable.  Thus, an application located in somedir/app could be
>compiled with
>
>which is incorrect since it expands to the directory containing the
>DSO and not the application executable.  This seems like deliberate
>behaviour in dl-object.c, so it needs to be fixed in the man page.
>Credit goes to Jon Wakely for finding this[1].

Thanks, Siddhesh, I was just preparing this suggested patch.
  

Comments

Michael Kerrisk \(man-pages\) Oct. 28, 2014, 1:46 p.m. UTC | #1
Hello Jonathan and Siddesh,

Thanks for the patch and the report. 

I applied the patch. One question, below.

On 10/09/2014 08:19 PM, Jonathan Wakely wrote:
> On 09/10/14 23:18 +0530, Siddhesh Poyarekar wrote:
>> Hi Michael,
>>
>> The ld.so man page says:
>>
>>       $ORIGIN (or equivalently ${ORIGIN})
>>              This expands to the directory containing the application
>> executable.  Thus, an application located in somedir/app could be
>> compiled with
>>
>> which is incorrect since it expands to the directory containing the
>> DSO and not the application executable.  This seems like deliberate
>> behaviour in dl-object.c, so it needs to be fixed in the man page.
>> Credit goes to Jon Wakely for finding this[1].
> 
> Thanks, Siddhesh, I was just preparing this suggested patch.
> 
> 
> > diff --git a/man8/ld.so.8 b/man8/ld.so.8
> index a5a7293..ac02df6 100644
> --- a/man8/ld.so.8
> +++ b/man8/ld.so.8
> @@ -92,7 +92,7 @@ understands certain strings in an rpath specification (DT_RPATH or DT_RUNPATH);
>  .TP
>  .IR $ORIGIN " (or equivalently " ${ORIGIN} )
>  This expands to
> -the directory containing the application executable.
> +the directory containing the program or library.

I made this "...program or shared library". Okay?

Thanks,

Michael


>  Thus, an application located in
>  .I somedir/app
>  could be compiled with
  
Jonathan Wakely Oct. 28, 2014, 2:09 p.m. UTC | #2
On 28/10/14 14:46 +0100, Michael Kerrisk (man-pages) wrote:
>Hello Jonathan and Siddesh,
>
>Thanks for the patch and the report.
>
>I applied the patch. One question, below.
>
>On 10/09/2014 08:19 PM, Jonathan Wakely wrote:
>> On 09/10/14 23:18 +0530, Siddhesh Poyarekar wrote:
>>> Hi Michael,
>>>
>>> The ld.so man page says:
>>>
>>>       $ORIGIN (or equivalently ${ORIGIN})
>>>              This expands to the directory containing the application
>>> executable.  Thus, an application located in somedir/app could be
>>> compiled with
>>>
>>> which is incorrect since it expands to the directory containing the
>>> DSO and not the application executable.  This seems like deliberate
>>> behaviour in dl-object.c, so it needs to be fixed in the man page.
>>> Credit goes to Jon Wakely for finding this[1].
>>
>> Thanks, Siddhesh, I was just preparing this suggested patch.
>>
>>
>> > diff --git a/man8/ld.so.8 b/man8/ld.so.8
>> index a5a7293..ac02df6 100644
>> --- a/man8/ld.so.8
>> +++ b/man8/ld.so.8
>> @@ -92,7 +92,7 @@ understands certain strings in an rpath specification (DT_RPATH or DT_RUNPATH);
>>  .TP
>>  .IR $ORIGIN " (or equivalently " ${ORIGIN} )
>>  This expands to
>> -the directory containing the application executable.
>> +the directory containing the program or library.
>
>I made this "...program or shared library". Okay?

Yes, I think that's an improvement.

I used "program or library" to match the first line of the SYNOPSIS
which uses the same wording, but there it says "some dynamically
linked program or library" which makes it clear it refers to
shared libraries. Your change makes the same thing clear in the
description of $ORIGIN.

Thanks,

Jonathan
  
Michael Kerrisk \(man-pages\) Oct. 28, 2014, 2:11 p.m. UTC | #3
On Tue, Oct 28, 2014 at 3:09 PM, Jonathan Wakely <jwakely@redhat.com> wrote:
> On 28/10/14 14:46 +0100, Michael Kerrisk (man-pages) wrote:
>>
>> Hello Jonathan and Siddesh,
>>
>> Thanks for the patch and the report.
>>
>> I applied the patch. One question, below.
>>
>> On 10/09/2014 08:19 PM, Jonathan Wakely wrote:
>>>
>>> On 09/10/14 23:18 +0530, Siddhesh Poyarekar wrote:
>>>>
>>>> Hi Michael,
>>>>
>>>> The ld.so man page says:
>>>>
>>>>       $ORIGIN (or equivalently ${ORIGIN})
>>>>              This expands to the directory containing the application
>>>> executable.  Thus, an application located in somedir/app could be
>>>> compiled with
>>>>
>>>> which is incorrect since it expands to the directory containing the
>>>> DSO and not the application executable.  This seems like deliberate
>>>> behaviour in dl-object.c, so it needs to be fixed in the man page.
>>>> Credit goes to Jon Wakely for finding this[1].
>>>
>>>
>>> Thanks, Siddhesh, I was just preparing this suggested patch.
>>>
>>>
>>> > diff --git a/man8/ld.so.8 b/man8/ld.so.8
>>> index a5a7293..ac02df6 100644
>>> --- a/man8/ld.so.8
>>> +++ b/man8/ld.so.8
>>> @@ -92,7 +92,7 @@ understands certain strings in an rpath specification
>>> (DT_RPATH or DT_RUNPATH);
>>>  .TP
>>>  .IR $ORIGIN " (or equivalently " ${ORIGIN} )
>>>  This expands to
>>> -the directory containing the application executable.
>>> +the directory containing the program or library.
>>
>>
>> I made this "...program or shared library". Okay?
>
>
> Yes, I think that's an improvement.
>
> I used "program or library" to match the first line of the SYNOPSIS
> which uses the same wording, but there it says "some dynamically
> linked program or library" which makes it clear it refers to
> shared libraries. Your change makes the same thing clear in the
> description of $ORIGIN.
>

Thanks, Jonathan.

Cheers,

Michael
  

Patch

diff --git a/man8/ld.so.8 b/man8/ld.so.8
index a5a7293..ac02df6 100644
--- a/man8/ld.so.8
+++ b/man8/ld.so.8
@@ -92,7 +92,7 @@  understands certain strings in an rpath specification (DT_RPATH or DT_RUNPATH);
 .TP
 .IR $ORIGIN " (or equivalently " ${ORIGIN} )
 This expands to
-the directory containing the application executable.
+the directory containing the program or library.
 Thus, an application located in
 .I somedir/app
 could be compiled with