All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
@ 2016-11-27 16:28 Adrian Bunk
  2016-11-28 15:05 ` Paolo Bonzini
  0 siblings, 1 reply; 8+ messages in thread
From: Adrian Bunk @ 2016-11-27 16:28 UTC (permalink / raw)
  To: qemu-devel, qemu-trivial

Building qemu fails in distributions where gcc enables PIE
by default (e.g. Debian unstable) with:
/usr/bin/ld: -r and -pie may not be used together

-r and -pie cannot be used together in the linker,
and position independent is already relocatable.

Use -r instead of -Wl,-r to avoid gcc passing -r to the
linker when PIE is enabled.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
 rules.mak | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rules.mak b/rules.mak
index 0333ae3..545ebd9 100644
--- a/rules.mak
+++ b/rules.mak
@@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
 	$(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
 
 
-LD_REL := $(CC) -nostdlib -Wl,-r $(LD_REL_FLAGS)
+LD_REL := $(CC) -nostdlib -r $(LD_REL_FLAGS)
 
 %.mo:
 	$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
-- 
2.10.2

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-27 16:28 [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default Adrian Bunk
@ 2016-11-28 15:05 ` Paolo Bonzini
  2016-11-28 15:24   ` Adrian Bunk
  0 siblings, 1 reply; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:05 UTC (permalink / raw)
  To: Adrian Bunk, qemu-devel, qemu-trivial



On 27/11/2016 17:28, Adrian Bunk wrote:
> Building qemu fails in distributions where gcc enables PIE
> by default (e.g. Debian unstable) with:
> /usr/bin/ld: -r and -pie may not be used together
> 
> -r and -pie cannot be used together in the linker,
> and position independent is already relocatable.
> 
> Use -r instead of -Wl,-r to avoid gcc passing -r to the
> linker when PIE is enabled.
> 
> Signed-off-by: Adrian Bunk <bunk@stusta.de>

I think this is a bug in the linker.  If the linker is producing
relocatable objects by default, it has no reason to refuse -r.  Have you
tried asking the binutils folks about it too?

But the patch would probably remove the need for LD_REL_FLAGS, based on
a quick look at the GCC source code, so I guess it's fine.

Paolo

> ---
>  rules.mak | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/rules.mak b/rules.mak
> index 0333ae3..545ebd9 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
>  	$(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
>  
>  
> -LD_REL := $(CC) -nostdlib -Wl,-r $(LD_REL_FLAGS)
> +LD_REL := $(CC) -nostdlib -r $(LD_REL_FLAGS)
>  
>  %.mo:
>  	$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-28 15:05 ` Paolo Bonzini
@ 2016-11-28 15:24   ` Adrian Bunk
  2016-11-28 15:38     ` Paolo Bonzini
  0 siblings, 1 reply; 8+ messages in thread
From: Adrian Bunk @ 2016-11-28 15:24 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel, qemu-trivial

On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
> 
> 
> On 27/11/2016 17:28, Adrian Bunk wrote:
> > Building qemu fails in distributions where gcc enables PIE
> > by default (e.g. Debian unstable) with:
> > /usr/bin/ld: -r and -pie may not be used together
> > 
> > -r and -pie cannot be used together in the linker,
> > and position independent is already relocatable.
> > 
> > Use -r instead of -Wl,-r to avoid gcc passing -r to the
> > linker when PIE is enabled.
> > 
> > Signed-off-by: Adrian Bunk <bunk@stusta.de>
> 
> I think this is a bug in the linker.  If the linker is producing
> relocatable objects by default, it has no reason to refuse -r.  Have you
> tried asking the binutils folks about it too?

The linker knows nothing about this default, gcc is passing -pie
to the linker.

>...
> Paolo
>...

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-28 15:24   ` Adrian Bunk
@ 2016-11-28 15:38     ` Paolo Bonzini
  2016-11-28 15:42       ` Paolo Bonzini
  0 siblings, 1 reply; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:38 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: qemu-devel, qemu-trivial



On 28/11/2016 16:24, Adrian Bunk wrote:
> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>
>>
>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>> Building qemu fails in distributions where gcc enables PIE
>>> by default (e.g. Debian unstable) with:
>>> /usr/bin/ld: -r and -pie may not be used together
>>>
>>> -r and -pie cannot be used together in the linker,
>>> and position independent is already relocatable.
>>>
>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>> linker when PIE is enabled.
>>>
>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>
>> I think this is a bug in the linker.  If the linker is producing
>> relocatable objects by default, it has no reason to refuse -r.  Have you
>> tried asking the binutils folks about it too?
> 
> The linker knows nothing about this default, gcc is passing -pie
> to the linker.

The linker is receiving "-r -pie".  It can satisfy the requirement of
producing a relocatable object by discarding the "-r", but it doesn't.
That'd be a linker bug.

But in fact ELF makes PIE ET_DYN and relocatable ET_REL.  That would
make the linker error the right thing, but then I don't understand what
you mean by "position independent is already relocatable".

Paolo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-28 15:38     ` Paolo Bonzini
@ 2016-11-28 15:42       ` Paolo Bonzini
  2016-11-28 19:11         ` Adrian Bunk
  2016-11-29  9:33         ` Stefan Hajnoczi
  0 siblings, 2 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:42 UTC (permalink / raw)
  To: Adrian Bunk; +Cc: qemu-trivial, qemu-devel



On 28/11/2016 16:38, Paolo Bonzini wrote:
> 
> 
> On 28/11/2016 16:24, Adrian Bunk wrote:
>> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>>
>>>
>>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>>> Building qemu fails in distributions where gcc enables PIE
>>>> by default (e.g. Debian unstable) with:
>>>> /usr/bin/ld: -r and -pie may not be used together
>>>>
>>>> -r and -pie cannot be used together in the linker,
>>>> and position independent is already relocatable.
>>>>
>>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>>> linker when PIE is enabled.
>>>>
>>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>>
>>> I think this is a bug in the linker.  If the linker is producing
>>> relocatable objects by default, it has no reason to refuse -r.  Have you
>>> tried asking the binutils folks about it too?
>>
>> The linker knows nothing about this default, gcc is passing -pie
>> to the linker.
> 
> The linker is receiving "-r -pie".  It can satisfy the requirement of
> producing a relocatable object by discarding the "-r", but it doesn't.
> That'd be a linker bug.
> 
> But in fact ELF makes PIE ET_DYN and relocatable ET_REL.  That would
> make the linker error the right thing, but then I don't understand what
> you mean by "position independent is already relocatable".

Aha, I looked at GCC source code and this is incorrect: "Use -r instead
of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.

Paolo

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-28 15:42       ` Paolo Bonzini
@ 2016-11-28 19:11         ` Adrian Bunk
  2016-11-29  9:33         ` Stefan Hajnoczi
  1 sibling, 0 replies; 8+ messages in thread
From: Adrian Bunk @ 2016-11-28 19:11 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-trivial, qemu-devel

On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
> 
> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.

That's what I get for writing things I did not double-check myself...

You are correct here (with the implication that my patch does change
behaviour even less).

> Paolo

cu
Adrian

-- 

       "Is there not promise of rain?" Ling Tan asked suddenly out
        of the darkness. There had been need of rain for many days.
       "Only a promise," Lao Er said.
                                       Pearl S. Buck - Dragon Seed

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-28 15:42       ` Paolo Bonzini
  2016-11-28 19:11         ` Adrian Bunk
@ 2016-11-29  9:33         ` Stefan Hajnoczi
  2016-11-29 12:09           ` Paolo Bonzini
  1 sibling, 1 reply; 8+ messages in thread
From: Stefan Hajnoczi @ 2016-11-29  9:33 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Adrian Bunk, qemu-trivial, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1807 bytes --]

On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
> 
> 
> On 28/11/2016 16:38, Paolo Bonzini wrote:
> > 
> > 
> > On 28/11/2016 16:24, Adrian Bunk wrote:
> >> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
> >>>
> >>>
> >>> On 27/11/2016 17:28, Adrian Bunk wrote:
> >>>> Building qemu fails in distributions where gcc enables PIE
> >>>> by default (e.g. Debian unstable) with:
> >>>> /usr/bin/ld: -r and -pie may not be used together
> >>>>
> >>>> -r and -pie cannot be used together in the linker,
> >>>> and position independent is already relocatable.
> >>>>
> >>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
> >>>> linker when PIE is enabled.
> >>>>
> >>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
> >>>
> >>> I think this is a bug in the linker.  If the linker is producing
> >>> relocatable objects by default, it has no reason to refuse -r.  Have you
> >>> tried asking the binutils folks about it too?
> >>
> >> The linker knows nothing about this default, gcc is passing -pie
> >> to the linker.
> > 
> > The linker is receiving "-r -pie".  It can satisfy the requirement of
> > producing a relocatable object by discarding the "-r", but it doesn't.
> > That'd be a linker bug.
> > 
> > But in fact ELF makes PIE ET_DYN and relocatable ET_REL.  That would
> > make the linker error the right thing, but then I don't understand what
> > you mean by "position independent is already relocatable".
> 
> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.

Should we merge this patch for 2.8 with the commit updated to reflect this?

Stefan

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
  2016-11-29  9:33         ` Stefan Hajnoczi
@ 2016-11-29 12:09           ` Paolo Bonzini
  0 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-29 12:09 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: Adrian Bunk, qemu-trivial, qemu-devel



On 29/11/2016 10:33, Stefan Hajnoczi wrote:
> On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
>>
>>
>> On 28/11/2016 16:38, Paolo Bonzini wrote:
>>>
>>>
>>> On 28/11/2016 16:24, Adrian Bunk wrote:
>>>> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>>>>
>>>>>
>>>>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>>>>> Building qemu fails in distributions where gcc enables PIE
>>>>>> by default (e.g. Debian unstable) with:
>>>>>> /usr/bin/ld: -r and -pie may not be used together
>>>>>>
>>>>>> -r and -pie cannot be used together in the linker,
>>>>>> and position independent is already relocatable.
>>>>>>
>>>>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>>>>> linker when PIE is enabled.
>>>>>>
>>>>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>>>>
>>>>> I think this is a bug in the linker.  If the linker is producing
>>>>> relocatable objects by default, it has no reason to refuse -r.  Have you
>>>>> tried asking the binutils folks about it too?
>>>>
>>>> The linker knows nothing about this default, gcc is passing -pie
>>>> to the linker.
>>>
>>> The linker is receiving "-r -pie".  It can satisfy the requirement of
>>> producing a relocatable object by discarding the "-r", but it doesn't.
>>> That'd be a linker bug.
>>>
>>> But in fact ELF makes PIE ET_DYN and relocatable ET_REL.  That would
>>> make the linker error the right thing, but then I don't understand what
>>> you mean by "position independent is already relocatable".
>>
>> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
>> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
>> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.
> 
> Should we merge this patch for 2.8 with the commit updated to reflect this?

Yes, I've already sent a pull request for it.

Paolo

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-11-29 12:09 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-27 16:28 [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default Adrian Bunk
2016-11-28 15:05 ` Paolo Bonzini
2016-11-28 15:24   ` Adrian Bunk
2016-11-28 15:38     ` Paolo Bonzini
2016-11-28 15:42       ` Paolo Bonzini
2016-11-28 19:11         ` Adrian Bunk
2016-11-29  9:33         ` Stefan Hajnoczi
2016-11-29 12:09           ` Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.