lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <570878b9-a9c8-a12e-4721-32b6ca010995@gmx.de>
Date:   Sun, 30 Jan 2022 11:47:38 +0100
From:   Helge Deller <deller@....de>
To:     "Chen, Rong A" <rong.a.chen@...el.com>,
        kernel test robot <lkp@...el.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        John David Anglin <dave.anglin@...l.net>
Subject: Re: [kbuild-all] Re: [deller-parisc:5.17-vdso-mini-3 1/1]
 arch/parisc/kernel/vdso32/sigtramp.S:39: Error: unknown pseudo-op: `.proc'

Hello Rong Chen,

On 1/30/22 07:53, Chen, Rong A wrote:
> On 1/30/2022 1:50 AM, Helge Deller wrote:
>> On 1/29/22 03:00, kernel test robot wrote:
>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git 5.17-vdso-mini-3
>>> head:   8d7e3770fb1fb6c01147f8ebf2914cd2037fac16
>>> commit: 8d7e3770fb1fb6c01147f8ebf2914cd2037fac16 [1/1] parisc: Add vDSO support
>>> config: parisc-generic-64bit_defconfig (https://download.01.org/0day-ci/archive/20220129/202201290925.4WPmV6eS-lkp@intel.com/config)
>>> compiler: hppa64-linux-gcc (GCC) 11.2.0
>>> reproduce (this is a W=1 build):
>>>          wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>          chmod +x ~/bin/make.cross
>>>          # https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git/commit/?id=8d7e3770fb1fb6c01147f8ebf2914cd2037fac16
>>>          git remote add deller-parisc https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git
>>>          git fetch --no-tags deller-parisc 5.17-vdso-mini-3
>>>          git checkout 8d7e3770fb1fb6c01147f8ebf2914cd2037fac16
>>>          # save the config file to linux build tree
>>>          mkdir build_dir
>>>          COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=parisc prepare
>>
>> I'm somewhat confused by those errors.
>>
>> There are two changes which happened in the parisc port:
>>
>> 1.) If you want to build a 64bit kernel, you now need "ARCH=parisc64". Before "ARCH=parisc" was sufficient,
>> but now ARCH=parisc64 builds 64bit kernel, and ARCH=parisc builds the 32bit kernel.
>
> Hi Helge,
>
> Thanks for the explanation, we'll update to use ARCH=parisc64 for 64bit kernel.
>
>>
>> 2.) The patch which is being complained about here is, that it adds an initial vDSO, which
>> includes builds the 64- and 32-bit vDSO in the same build.
>> So, on a 64bit kernel build (which seems to happen here), the 32-bit gcc-11 compiler needs to be
>> installed as well in order to be able to build the 32-bit "compat" vDSO.
>> Maybe the errors here are happening, because the 32bit hppa cross compiler is missing?
>
> I tried the below command, the error still exists, is there anything wrong?
>
> $make W=1 --keep-going CROSS_COMPILE=hppa64-linux- -j32 O=./build_dir ARCH=parisc64 prepare

Please drop the "CROSS_COMPILE=hppa64-linux-" part.
It will autodetect the cross compiler, so this is sufficient:

make W=1 --keep-going -j32 O=./build_dir ARCH=parisc64 prepare

Helge

> ...
> Assembler messages:
> ../arch/parisc/kernel/vdso32/sigtramp.S:39: Error: unknown pseudo-op: `.proc'
> ../arch/parisc/kernel/vdso32/restart_syscall.S:16: Error: bad or irreducible absolute expression
> ../arch/parisc/kernel/vdso32/sigtramp.S:40: Error: unknown pseudo-op: `.callinfo'
> ../arch/parisc/kernel/vdso32/restart_syscall.S:16: Error: junk at end of line, first unrecognized character is `:'
> ../arch/parisc/kernel/vdso32/sigtramp.S:41: Error: unknown pseudo-op: `.entry'
> ../arch/parisc/kernel/vdso32/restart_syscall.S:26: Error: no such instruction: `ldw 0(%sp),%r31'
> ../arch/parisc/kernel/vdso32/restart_syscall.S:29: Error: no such instruction: `be 0x100(%sr2,%r0)'
> ../arch/parisc/kernel/vdso32/sigtramp.S:44: Error: no such instruction: `ldi 0,%r25'
> ../arch/parisc/kernel/vdso32/restart_syscall.S:30: Error: no such instruction: `ldi 0,%r20'
>
> Best Regards,
> Rong Chen
>
>>
>> Could you please check ?
>>
>> Helge
>>
>>
>>> All errors (new ones prefixed by >>):
>>>
>>>     arch/parisc/kernel/vdso64/Makefile:30: FORCE prerequisite is missing
>>>     arch/parisc/kernel/vdso32/sigtramp.S: Assembler messages:
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:39: Error: unknown pseudo-op: `.proc'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:40: Error: unknown pseudo-op: `.callinfo'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:41: Error: unknown pseudo-op: `.entry'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:44: Error: no such instruction: `ldi 0,%r25'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:45: Error: no such instruction: `ldi 173,%r20'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:46: Error: no such instruction: `ble 0x100(%sr2,%r0)'
>>>     arch/parisc/kernel/vdso32/sigtramp.S:49: Error: no such instruction: `ldi 1,%r25'
>>>     arch/parisc/kernel/vdso32/sigtramp.S:50: Error: no such instruction: `ldi 173,%r20'
>>>     arch/parisc/kernel/vdso32/sigtramp.S:51: Error: no such instruction: `ble 0x100(%sr2,%r0)'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:54: Error: unknown pseudo-op: `.exit'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:55: Error: unknown pseudo-op: `.procend'
>>>>> arch/parisc/kernel/vdso32/sigtramp.S:76: Error: unknown pseudo-op: `.stringz'
>>>     make[2]: *** [arch/parisc/kernel/vdso32/Makefile:34: arch/parisc/kernel/vdso32/sigtramp.o] Error 1
>>>     arch/parisc/kernel/vdso32/restart_syscall.S: Assembler messages:
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:16: Error: bad or irreducible absolute expression
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:16: Error: junk at end of line, first unrecognized character is `:'
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:26: Error: no such instruction: `ldw 0(%sp),%r31'
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:29: Error: no such instruction: `be 0x100(%sr2,%r0)'
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:30: Error: no such instruction: `ldi 0,%r20'
>>>>> arch/parisc/kernel/vdso32/restart_syscall.S:32: Error: .cfi_endproc without corresponding .cfi_startproc
>>>     make[2]: *** [arch/parisc/kernel/vdso32/Makefile:34: arch/parisc/kernel/vdso32/restart_syscall.o] Error 1
>>>     make[2]: Target 'include/generated/vdso32-offsets.h' not remade because of errors.
>>>     make[1]: *** [arch/parisc/Makefile:186: vdso_prepare] Error 2
>>>     make[1]: Target 'prepare' not remade because of errors.
>>>     make: *** [Makefile:219: __sub-make] Error 2
>>>     make: Target 'prepare' not remade because of errors.
>>>
>>>
>>> vim +39 arch/parisc/kernel/vdso32/sigtramp.S
>>>
>>>      12
>>>      13        .text
>>>      14
>>>      15    /* Gdb expects the trampoline is on the stack and the pc is offset from
>>>      16       a 64-byte boundary by 0, 4 or 5 instructions. Since the vdso trampoline
>>>      17       is not on the stack, we need a new variant with different offsets and
>>>      18       data to tell gdb where to find the signal context on the stack.
>>>      19
>>>      20       Here we put the offset to the context data at the start of the trampoline
>>>      21       region and offset the first trampoline by 2 instructions. Please do
>>>      22       not change the trampoline as the code in gdb depends on the following
>>>      23       instruction sequence exactly.
>>>      24     */
>>>      25        .align 64
>>>      26        .word SIGFRAME_CONTEXT_REGS32
>>>      27
>>>      28    /* The nop here is a hack.  The dwarf2 unwind routines subtract 1 from
>>>      29       the return address to get an address in the middle of the presumed
>>>      30       call instruction.  Since we don't have a call here, we artifically
>>>      31       extend the range covered by the unwind info by adding a nop before
>>>      32       the real start.
>>>      33     */
>>>      34        nop
>>>      35
>>>      36        .globl __kernel_sigtramp_rt
>>>      37        .type __kernel_sigtramp_rt, @function
>>>      38    __kernel_sigtramp_rt:
>>>    > 39        .proc
>>>    > 40        .callinfo FRAME=ASM_SIGFRAME_SIZE32,CALLS,SAVE_RP
>>>    > 41        .entry
>>>      42
>>>      43    .Lsigrt_start = . - 4
>>>    > 44    0:    ldi    0, %r25            /* (in_syscall=0) */
>>>    > 45        ldi  __NR_rt_sigreturn, %r20
>>>    > 46        ble  0x100(%sr2, %r0)
>>>      47        nop
>>>      48
>>>      49    1:    ldi    1, %r25            /* (in_syscall=1) */
>>>      50        ldi  __NR_rt_sigreturn, %r20
>>>      51        ble  0x100(%sr2, %r0)
>>>      52        nop
>>>      53    .Lsigrt_end:
>>>    > 54        .exit
>>>    > 55        .procend
>>>      56        .size __kernel_sigtramp_rt,.-__kernel_sigtramp_rt
>>>      57
>>>      58
>>>      59        .section .eh_frame,"a",@progbits
>>>      60
>>>      61    /* This is where the mcontext_t struct can be found on the stack.  */
>>>      62    #define PTREGS SIGFRAME_CONTEXT_REGS32    /* 32-bit process offset is -672 */
>>>      63
>>>      64    /* Register REGNO can be found at offset OFS of the mcontext_t structure. */
>>>      65        .macro rsave regno,ofs
>>>      66        .byte 0x05        /* DW_CFA_offset_extended */
>>>      67        .uleb128 \regno;    /*   regno */
>>>      68        .uleb128 \ofs        /*   factored offset */
>>>      69        .endm
>>>      70
>>>      71    .Lcie:
>>>      72        .long .Lcie_end - .Lcie_start
>>>      73    .Lcie_start:
>>>      74        .long 0            /* CIE ID */
>>>      75        .byte 1            /* Version number */
>>>    > 76        .stringz "zRS"        /* NUL-terminated augmentation string */
>> _______________________________________________
>> kbuild-all mailing list -- kbuild-all@...ts.01.org
>> To unsubscribe send an email to kbuild-all-leave@...ts.01.org
>>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ