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] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK7LNARU444UrZXVodNftud-scy5KKUjdtTM0GOrxHB9pyKmkg@mail.gmail.com>
Date:   Sat, 1 Apr 2023 00:42:13 +0900
From:   Masahiro Yamada <masahiroy@...nel.org>
To:     Nathan Chancellor <nathan@...nel.org>
Cc:     Alyssa Ross <hi@...ssa.is>, Nick Cao <nickcao@...hi.co>,
        linux-kbuild@...r.kernel.org,
        Nick Desaulniers <ndesaulniers@...gle.com>,
        linux-kernel@...r.kernel.org, llvm@...ts.linux.dev,
        linux-riscv@...ts.infradead.org, Tom Rix <trix@...hat.com>,
        Albert Ou <aou@...s.berkeley.edu>,
        Palmer Dabbelt <palmer@...belt.com>,
        Paul Walmsley <paul.walmsley@...ive.com>,
        stable@...r.kernel.org, Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
        Dave Hansen <dave.hansen@...ux.intel.com>, x86@...nel.org,
        "H. Peter Anvin" <hpa@...or.com>
Subject: Re: [PATCH v3] purgatory: fix disabling debug info

On Fri, Mar 31, 2023 at 7:29 AM Nathan Chancellor <nathan@...nel.org> wrote:
>
> On Thu, Mar 30, 2023 at 06:22:24PM +0000, Alyssa Ross wrote:
> > Since 32ef9e5054ec, -Wa,-gdwarf-2 is no longer used in KBUILD_AFLAGS.
> > Instead, it includes -g, the appropriate -gdwarf-* flag, and also the
> > -Wa versions of both of those if building with Clang and GNU as.  As a
> > result, debug info was being generated for the purgatory objects, even
> > though the intention was that it not be.
> >
> > Fixes: 32ef9e5054ec ("Makefile.debug: re-enable debug info for .S files")
> > Signed-off-by: Alyssa Ross <hi@...ssa.is>
> > Cc: stable@...r.kernel.org
> > Acked-by: Nick Desaulniers <ndesaulniers@...gle.com>
>
> This is definitely more future proof.
>
> Reviewed-by: Nathan Chancellor <nathan@...nel.org>
> Tested-by: Nathan Chancellor <nathan@...nel.org>



I prefer v3 since it is cleaner, but unfortunately
it does not work for Clang+GAS.


With v3 applied, I still see the debug info.



$ make LLVM=1 LLVM_IAS=0  arch/x86/purgatory/setup-x86_64.o
  UPD     include/config/kernel.release
  UPD     include/generated/utsrelease.h
  CALL    scripts/checksyscalls.sh
  DESCEND objtool
  INSTALL libsubcmd_headers
  AS      arch/x86/purgatory/setup-x86_64.o
$ readelf -S arch/x86/purgatory/setup-x86_64.o
There are 18 section headers, starting at offset 0x14d8:

Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
  [ 0]                   NULL             0000000000000000  00000000
       0000000000000000  0000000000000000           0     0     0
  [ 1] .text             PROGBITS         0000000000000000  00000040
       0000000000000027  0000000000000000  AX       0     0     16
  [ 2] .rela.text        RELA             0000000000000000  000012f8
       0000000000000060  0000000000000018   I      15     1     8
  [ 3] .data             PROGBITS         0000000000000000  00000067
       0000000000000000  0000000000000000  WA       0     0     1
  [ 4] .bss              NOBITS           0000000000000000  00001000
       0000000000001000  0000000000000000  WA       0     0     4096
  [ 5] .rodata           PROGBITS         0000000000000000  00001000
       0000000000000020  0000000000000000   A       0     0     16
  [ 6] .rela.rodata      RELA             0000000000000000  00001358
       0000000000000018  0000000000000018   I      15     5     8
  [ 7] .debug_line       PROGBITS         0000000000000000  00001020
       000000000000005f  0000000000000000           0     0     1
  [ 8] .rela.debug_line  RELA             0000000000000000  00001370
       0000000000000018  0000000000000018   I      15     7     8
  [ 9] .debug_info       PROGBITS         0000000000000000  0000107f
       0000000000000027  0000000000000000           0     0     1
  [10] .rela.debug_info  RELA             0000000000000000  00001388
       0000000000000090  0000000000000018   I      15     9     8
  [11] .debug_abbrev     PROGBITS         0000000000000000  000010a6
       0000000000000014  0000000000000000           0     0     1
  [12] .debug_aranges    PROGBITS         0000000000000000  000010c0
       0000000000000030  0000000000000000           0     0     16
  [13] .rela.debug_[...] RELA             0000000000000000  00001418
       0000000000000030  0000000000000018   I      15    12     8
  [14] .debug_str        PROGBITS         0000000000000000  000010f0
       0000000000000054  0000000000000001  MS       0     0     1
  [15] .symtab           SYMTAB           0000000000000000  00001148
       0000000000000168  0000000000000018          16    12     8
  [16] .strtab           STRTAB           0000000000000000  000012b0
       0000000000000041  0000000000000000           0     0     1
  [17] .shstrtab         STRTAB           0000000000000000  00001448
       000000000000008d  0000000000000000           0     0     1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  D (mbind), l (large), p (processor specific)






With -g0 given, GCC stops passing -g -gdwarf-4 down to GAS.


Clang does not do anything about -g0 for the external assembler.




I was thinking of dropping LLVM_IAS=0 support.
When we decide to give up -fno-integrated-as,
we can clean up the code in various places.


Anyway, v3 does not work in the current situation.


V2 works for all usecases.




-- 
Best Regards
Masahiro Yamada

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ