um: Fix compile failure due to current_text_address() definition
Subsystems (2)
PATCH 1/1 um: Fix compile failure due to current_text_address() definition
Fixes the following link error:
``` /usr/bin/ld: net/built-in.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC ```
This is the same definition used on some other architectures.
---
I am not sure this is the correct patch in the context of uml. I believe this should give the runtime ip, which may be different between runs. It may be better to use the offset in .text (e.g. by using pc-__text_start), which should be consistent.
arch/x86/um/asm/processor_64.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/x86/um/asm/processor_64.h +1 -1
@@ -32,7 +32,7 @@ static inline void arch_copy_thread(struct arch_thread *from, }#define current_text_addr () \ - ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; }) + ({ __label__ _l; _l: &&_l; })#define current_sp () ({ void *sp; __asm__("movq %%rsp, %0" : "=r" (sp) : ); sp; })#define current_bp () ({ unsigned long bp; __asm__("movq %%rbp, %0" : "=r" (bp) : ); bp; })
Signature · 1 line
2.9.3
Richard Weinberger
maintainerKeno,
Quoted 6 lines · Keno Fischer
Fixes the following link error:
``` /usr/bin/ld: net/built-in.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC ```
Quoted 8 lines
This is the same definition used on some other architectures.
Signed-off-by Keno Fischer <[email protected]>---
I am not sure this is the correct patch in the context of uml. I believe this should give the runtime ip, which may be different between runs. It may be better to use the offset in .text (e.g. by usingpc-__text_start), which should be consistent.
The problem is ready being solved in a generic way:
http://marc.info/?l=linux-kernel&m=147828481602561&w=2
Can you please give this patch a try?
Thanks,
//richard
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 4 lines
The problem is ready being solved in a generic way:
http://marc.info/?l=linux-kernel&m=147828481602561&w=2Can you please give this patch a try?
No dice. After backing out my patch and applying that one I get:
/usr/bin/ld: error: net/built-in.o: requires unsupported dynamic reloc 11; recompile with -fPIC
Richard Weinberger
maintainerKeno,
Quoted 9 lines · Keno Fischer
Quoted 4 lines
The problem is ready being solved in a generic way:
http://marc.info/?l=linux-kernel&m=147828481602561&w=2Can you please give this patch a try?
No dice. After backing out my patch and applying that one I get:
/usr/bin/ld: error:net/built-in.o: requires unsupported dynamic reloc 11; recompile with -fPIC
But you applied the whole series, right?
Thanks,
//richard
Yes
Quoted 17 lines · Richard Weinberger
Keno,
Quoted 9 lines · Keno Fischer
Quoted 4 lines
The problem is ready being solved in a generic way:
http://marc.info/?l=linux-kernel&m=147828481602561&w=2Can you please give this patch a try?
No dice. After backing out my patch and applying that one I get:
/usr/bin/ld: error:net/built-in.o: requires unsupported dynamic reloc 11; recompile with -fPICBut you applied the whole series, right?
Thanks,
//richard
Richard Weinberger
maintainerKeno,
Quoted 1 line · Keno Fischer
Yes
Can you please reply to Sebastian's patch series and explain him how you trigger that error?
I don't have a gcc broken by Debian on my machine right now.
Quoted 7 lines · Richard Weinberger
Quoted 6 lines
Keno,
Quoted 3 lines · Keno Fischer
Quoted 3 lines
The problem is ready being solved in a generic way:
http://marc.info/?l=linux-kernel&m=147828481602561&w=2
Quoted 8 lines
Quoted 8 lines
Quoted 6 lines
Quoted 1 line
Can you please give this patch a try?
No dice. After backing out my patch and applying that one I get:
/usr/bin/ld: error:net/built-in.o: requires unsupported dynamic reloc 11; recompile with -fPICBut you applied the whole series, right?
Thanks,
//richard
Quoted 3 lines · Richard Weinberger
Can you please reply to Sebastian's patch series and explain him how you trigger that error?
I don't have a gcc broken by Debian on my machine right now.
I'm not sure how to reply to his patch series directly since I'm not subscribed to lkml
(I imagine I can set headers manually, such that things get appropriately threaded,
but for now let me just reply here). I don't think there's much to it. It seems like any
use of current_text_addr() in ARCH=um build will cause this problem, there's just
not very many such uses in the code base. I believe this particular problem should
be reproducible as long as CONFIG_INET is set for an ARCH=um build.
Richard Weinberger
maintainerKeno,
Quoted 5 lines · Keno Fischer
Fixes the following link error:
``` /usr/bin/ld: net/built-in.o: relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile with -fPIC ```
How and where do you trigger this?
I had a chat with Sebastian and we are not 100% sure what is going on. On my freshly installed Debian sid with gcc version 6.2.0 20161109 (Debian 6.2.0-13) UML builds fine except when I set CONFIG_STATIC_LINK=y
But then I'm facing a slightly different error:
CC init/version.o
LD init/built-in.o/usr/bin/ld: init/built-in.o: relocation R_X86_64_PLTOFF64 against STT_GNU_IFUNC symbol `memmove' isn't supported /usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Your patch also does not cure this. I'll investigate later into that.
Quoted 17 lines
This is the same definition used on some other architectures.
Signed-off-by Keno Fischer <[email protected]>---
I am not sure this is the correct patch in the context of uml. I believe this should give the runtime ip, which may be different between runs. It may be better to use the offset in .text (e.g. by usingpc-__text_start), which should be consistent.arch/x86/um/asm/processor_64.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/x86/um/asm/processor_64.h +0
-0
arch/x86/um/asm/processor_64.h static inline void arch_copy_thread(struct arch_thread *from, · line 38
Quoted 8 lines
arch/x86/um/asm/processor_64.h +1
-1@@ -32,7 +32,7 @@ static inline void arch_copy_thread(struct arch_thread *from, }#define current_text_addr () \ - ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; }) + ({ __label__ _l; _l: &&_l; })#define current_sp () ({ void *sp; __asm__("movq %%rsp, %0" : "=r" (sp) : ); sp; })#define current_bp () ({ unsigned long bp; __asm__("movq %%rbp, %0" : "=r" (bp) : ); bp; })
Thanks,
//richard
Did you have CONFIG_INET set? I'm attaching my full .config. This is on vanilla Ubuntu 16.10.
I did see the same error when building with CONFIG_STATIC_LINK=y. Note that I also, separately, ran into a linker problem, though I believe it is unrelated to this patch
(though perhaps is related to the problem you're seeing?):
https://sourceware.org/bugzilla/show_bug.cgi?id=20800.
I'd also be happy to provide you with ssh access to the machine that I'm seeing this on if that
would be helpful.
Richard Weinberger
maintainerQuoted 2 lines · Keno Fischer
Did you have
CONFIG_INETset? I'm attaching my full .config. This is on vanilla Ubuntu 16.10.
Yes, CONFIG_INET is set. Let my try on Ubuntu. ;-\
Quoted 5 lines
I did see the same error when building with
CONFIG_STATIC_LINK=y. Note that I also, separately, ran into a linker problem, though I believe it is unrelated to this patch
(though perhaps is related to the problem you're seeing?):
https://sourceware.org/bugzilla/show_bug.cgi?id=20800.
This seems to be an UML<->glibc issue.memmove() is now an ifunc and for whatever reason it does not work with UML.
Quoted 3 lines
I'd also be happy to provide you with ssh access to the machine that I'm seeing this on if that
would be helpful.
Okay, let me try myself first. I think I'm able to install Ubuntu. :)
Thanks,
//richard
Just as an FYI, the linker bug has been fixed in binutils.
Quoted 23 lines · Richard Weinberger
Quoted 2 lines · Keno Fischer
Did you have
CONFIG_INETset? I'm attaching my full .config. This is on vanilla Ubuntu 16.10.Yes,
CONFIG_INETis set. Let my try on Ubuntu. ;-\Quoted 5 lines
I did see the same error when building with
CONFIG_STATIC_LINK=y. Note that I also, separately, ran into a linker problem, though I believe it is unrelated to this patch
(though perhaps is related to the problem you're seeing?):
https://sourceware.org/bugzilla/show_bug.cgi?id=20800.This seems to be an UML<->glibc issue.
memmove()is now an ifunc and for whatever reason it does not work with UML.Quoted 3 lines
I'd also be happy to provide you with ssh access to the machine that I'm seeing this on if that
would be helpful.Okay, let me try myself first. I think I'm able to install Ubuntu. :)
Thanks,
//richard
Richard Weinberger
maintainerKeno,
Quoted 1 line · Keno Fischer
Just as an FYI, the linker bug has been fixed in binutils.
Interesting. Is the same bug also the root cause why a static build of UML does not work?
Thanks,
//richard
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel