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: <CAKwvOd=gD+Tn1BCHwtLztUuy6tBPqZxUyneddz3849pDqhP7dw@mail.gmail.com>
Date:   Wed, 10 Nov 2021 11:54:19 -0800
From:   Nick Desaulniers <ndesaulniers@...gle.com>
To:     Fangrui Song <maskray@...gle.com>,
        Masahiro Yamada <masahiroy@...nel.org>
Cc:     x86@...nel.org, Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
        "H . Peter Anvin" <hpa@...or.com>,
        clang-built-linux@...glegroups.com,
        Dave Hansen <dave.hansen@...ux.intel.com>,
        linux-kernel@...r.kernel.org, llvm@...ts.linux.dev
Subject: Re: [PATCH 2/2] x86/purgatory: remove -nostdlib compiler flag

On Mon, Nov 8, 2021 at 4:05 PM 'Fangrui Song' via Clang Built Linux
<clang-built-linux@...glegroups.com> wrote:
>
> On 2021-11-08, Nick Desaulniers wrote:
> >On Sun, Nov 7, 2021 at 8:27 AM Masahiro Yamada <masahiroy@...nel.org> wrote:
> >>
> >> The -nostdlib option requests the compiler to not use the standard
> >> system startup files or libraries when linking. It is effective only
> >> when $(CC) is used as a linker driver.
> >
> >Is that right? ld.lld recognizes --nostdlib and has --help text for it.
>
> GCC/Clang driver -nostdlib != ld.bfd/ld.lld -nostdlib.
>
> ld.lld -nostdlib just ignores SEARCH_DIR in a linker script.
> I think ld.bfd's -nostdlib is more complex than that which also has
> something to do with its internal linker script location.
> Anyway, getting of the obscure ld -nostdlib is a good idea.

Ok, I verified that the size of arch/x86/purgatory/purgatory.ro,
arch/x86/entry/vdso/vdso64.so, and arch/x86/entry/vdso/vdso32.so don't
change with this series. (ldd is not happy with the .so's regardless).

I also suspect that the linker when invoked directly can't assuming
it's linking object files created from C sources (ie. could have been
assembler sources), so there's no reason to assume that the libc, C
runtime, or compiler runtime would need to be linked against.

Reviewed-by: Nick Desaulniers <ndesaulniers@...gle.com>

>
> >>
> >> $(LD) is directly used for linking purgatory.{ro,chk} here, hence
> >> -nostdlib is unneeded.
> >>
> >> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> >> ---
> >>
> >>  arch/x86/purgatory/Makefile | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/arch/x86/purgatory/Makefile b/arch/x86/purgatory/Makefile
> >> index 95ea17a9d20c..ae53d54d7959 100644
> >> --- a/arch/x86/purgatory/Makefile
> >> +++ b/arch/x86/purgatory/Makefile
> >> @@ -16,7 +16,7 @@ CFLAGS_sha256.o := -D__DISABLE_EXPORTS
> >>
> >>  # When linking purgatory.ro with -r unresolved symbols are not checked,
> >>  # also link a purgatory.chk binary without -r to check for unresolved symbols.
> >> -PURGATORY_LDFLAGS := -e purgatory_start -nostdlib -z nodefaultlib
> >> +PURGATORY_LDFLAGS := -e purgatory_start -z nodefaultlib
> >>  LDFLAGS_purgatory.ro := -r $(PURGATORY_LDFLAGS)
> >>  LDFLAGS_purgatory.chk := $(PURGATORY_LDFLAGS)
> >>  targets += purgatory.ro purgatory.chk
> >> --
> >> 2.30.2
> >
> >--
> >Thanks,
> >~Nick Desaulniers
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20211109000531.k23mgrfjn5tomevv%40google.com.



-- 
Thanks,
~Nick Desaulniers

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ