r284256 - Link static PIE programs against rcrt0.o on OpenBSD

Hal Finkel via cfe-commits cfe-commits at lists.llvm.org
Sat Oct 29 23:12:35 PDT 2016


----- Original Message -----
> From: "Brad Smith via cfe-commits" <cfe-commits at lists.llvm.org>
> To: "Ed Maste" <emaste at freebsd.org>, sisnkemp at gmail.com, cfe-commits at lists.llvm.org
> Sent: Sunday, October 30, 2016 12:57:44 AM
> Subject: Re: r284256 - Link static PIE programs against rcrt0.o on OpenBSD
> 
> On 10/25/16 19:34, Brad Smith via cfe-commits wrote:
> > On 10/18/16 22:13, Brad Smith via cfe-commits wrote:
> >> On Fri, Oct 14, 2016 at 09:47:17PM -0400, Brad Smith via
> >> cfe-commits
> >> wrote:
> >>> On Fri, Oct 14, 2016 at 05:59:54PM -0000, Ed Maste via
> >>> cfe-commits
> >>> wrote:
> >>>> Author: emaste
> >>>> Date: Fri Oct 14 12:59:53 2016
> >>>> New Revision: 284256
> >>>>
> >>>> URL: http://llvm.org/viewvc/llvm-project?rev=284256&view=rev
> >>>> Log:
> >>>> Link static PIE programs against rcrt0.o on OpenBSD
> >>>>
> >>>> Patch by Stefan Kempf.
> >>>>
> >>>> Differential Revision:    https://reviews.llvm.org/D22130
> >>>>
> >>>> Modified:
> >>>>     cfe/trunk/lib/Driver/Tools.cpp
> >>>>     cfe/trunk/test/Driver/openbsd.c
> >>>>
> >>>> Modified: cfe/trunk/lib/Driver/Tools.cpp
> >>>> URL:
> >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=284256&r1=284255&r2=284256&view=diff
> >>>>
> >>>> ==============================================================================
> >>>>
> >>>> --- cfe/trunk/lib/Driver/Tools.cpp (original)
> >>>> +++ cfe/trunk/lib/Driver/Tools.cpp Fri Oct 14 12:59:53 2016
> >>>> @@ -8519,6 +8519,10 @@ void openbsd::Linker::ConstructJob(Compi
> >>>>        if (Args.hasArg(options::OPT_pg))
> >>>>          CmdArgs.push_back(
> >>>>
> >>>> Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o")));
> >>>> +      else if (Args.hasArg(options::OPT_static) &&
> >>>> +               !Args.hasArg(options::OPT_nopie))
> >>>> +        CmdArgs.push_back(
> >>>> +
> >>>> Args.MakeArgString(getToolChain().GetFilePath("rcrt0.o")));
> >>>>        else
> >>>>          CmdArgs.push_back(
> >>>>              Args.MakeArgString(getToolChain().GetFilePath("crt0.o")));
> >>>>
> >>>> Modified: cfe/trunk/test/Driver/openbsd.c
> >>>> URL:
> >>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/openbsd.c?rev=284256&r1=284255&r2=284256&view=diff
> >>>>
> >>>> ==============================================================================
> >>>>
> >>>> --- cfe/trunk/test/Driver/openbsd.c (original)
> >>>> +++ cfe/trunk/test/Driver/openbsd.c Fri Oct 14 12:59:53 2016
> >>>> @@ -67,3 +67,26 @@
> >>>>  // CHECK-MIPS64-PIC: as{{.*}}" "-mabi" "64" "-EB" "-KPIC"
> >>>>  // CHECK-MIPS64EL: as{{.*}}" "-mabi" "64" "-EL"
> >>>>  // CHECK-MIPS64EL-PIC: as{{.*}}" "-mabi" "64" "-EL" "-KPIC"
> >>>> +
> >>>> +// Check linking against correct startup code when (not) using
> >>>> PIE
> >>>> +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd
> >>>> %s
> >>>> -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-PIE %s
> >>>> +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd
> >>>> %s
> >>>> -fno-pie %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-PIE %s
> >>>> +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd
> >>>> -static %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-STATIC-PIE %s
> >>>> +// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd
> >>>> -static -fno-pie %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-STATIC-PIE %s
> >>>> +// RUN: %clang -no-canonical-prefix -target i868-pc-openbsd
> >>>> -nopie
> >>>> %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
> >>>> +// RUN: %clang -no-canonical-prefix -target i868-pc-openbsd
> >>>> -fno-pie -nopie %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
> >>>> +// RUN: %clang -no-canonical-prefix -target i868-pc-openbsd
> >>>> -static
> >>>> -nopie %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
> >>>> +// RUN: %clang -no-canonical-prefix -target i868-pc-openbsd
> >>>> -fno-pie -static -nopie %s -### 2>&1 \
> >>>> +// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
> >>>> +// CHECK-PIE: "/usr/lib/crt0.o"
> >>>> +// CHECK-PIE-NOT: "-nopie"
> >>>> +// CHECK-STATIC-PIE: "/usr/lib/rcrt0.o"
> >>>> +// CHECK-STATIC-PIE-NOT: "-nopie"
> >>>> +// CHECK-NOPIE: "-nopie" {{.*}}"/usr/lib/crt0.o"
> >>>
> >>> Ok, I see the obvious issue with -no-canonical-prefix vs
> >>> -no-canonical-prefixes
> >>> and fix the typo with the target triples.
> >>
> >> After seeing what the test failure was I have adjusted the tests
> >> as
> >> appropriate.
> >
> > ping.
> 
> ping ping.

What exactly are you pinging?

 -Hal

> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> 

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory


More information about the cfe-commits mailing list