2009-01-20 01:18:24

by Shane Hathaway

[permalink] [raw]
Subject: uml: sigprocmask fix

I just ran into the same issue described here:

http://lkml.org/lkml/2009/1/15/194

Like Americo Wang, my user mode linux compile failed when attempting to
link ".tmp_vmlinux". However, his patch is probably wrong. The problem
is that the name "sigprocmask" is getting renamed to
"kernel_sigprocmask" by a compiler directive in arch/um/Makefile, then
that name gets mangled into "sys_kernel_sigprocmask" by the
SYSCALL_DEFINE3(sigprocmask, ...) macro in kernel/signal.c.

So I added the following line to arch/um/sys-i386/sys_call_table.S:

#define sys_sigprocmask sys_kernel_sigprocmask

This made it compile and link correctly. Look at the symbols generated
by the compile of signal.c to see what I mean:

# nm kernel/signal.o | grep sigprocmask
0000008f r __kstrtab_kernel_sigprocmask
00000040 r __ksymtab_kernel_sigprocmask
00001ea6 T kernel_sigprocmask
00002d67 T sys_kernel_sigprocmask
00001faf T sys_rt_sigprocmask

Unfortunately, it's a mystery to me that others haven't run into this
before.

Shane


2009-01-22 16:21:18

by Cong Wang

[permalink] [raw]
Subject: Re: uml: sigprocmask fix

On Mon, Jan 19, 2009 at 06:18:01PM -0700, Shane Hathaway wrote:
>I just ran into the same issue described here:
>
>http://lkml.org/lkml/2009/1/15/194
>
>Like Americo Wang, my user mode linux compile failed when attempting to
>link ".tmp_vmlinux". However, his patch is probably wrong. The problem
>is that the name "sigprocmask" is getting renamed to
>"kernel_sigprocmask" by a compiler directive in arch/um/Makefile, then
>that name gets mangled into "sys_kernel_sigprocmask" by the
>SYSCALL_DEFINE3(sigprocmask, ...) macro in kernel/signal.c.


Hmmm, I found this, but note that replacing sigprocmask with
kernel_sigprocmask is done by strip, that should be after compiling.
But macros are processed before compiling.

Am I missing something?

Thanks.

--
"Against stupidity, the gods themselves, contend in vain."

2009-01-22 20:16:39

by Shane Hathaway

[permalink] [raw]
Subject: Re: uml: sigprocmask fix

Am?rico Wang wrote:
> On Mon, Jan 19, 2009 at 06:18:01PM -0700, Shane Hathaway wrote:
>> I just ran into the same issue described here:
>>
>> http://lkml.org/lkml/2009/1/15/194
>>
>> Like Americo Wang, my user mode linux compile failed when attempting to
>> link ".tmp_vmlinux". However, his patch is probably wrong. The problem
>> is that the name "sigprocmask" is getting renamed to
>> "kernel_sigprocmask" by a compiler directive in arch/um/Makefile, then
>> that name gets mangled into "sys_kernel_sigprocmask" by the
>> SYSCALL_DEFINE3(sigprocmask, ...) macro in kernel/signal.c.
>
>
> Hmmm, I found this, but note that replacing sigprocmask with
> kernel_sigprocmask is done by strip, that should be after compiling.
> But macros are processed before compiling.
>
> Am I missing something?

Probably not, but have you made progress in figuring out why others can
apparently successfully compile UML without patching sys_call_table.S at
all? That's the real mystery.

Shane