On Wed, Feb 12, 2020 at 04:05:38PM -0500, George Koehler wrote:
> This is the everything diff: it includes the clang diff that I sent to
> tech@, plus the major version bumps for libLLVM libc++ libc++abi.
> 
>  - distrib/sets/lists: put the new versions in the base sets.
>  - gnu/llvm/tools/clang: -msvr4-struct-return
>  - gnu/usr.bin/clang/libLLVM, lib/libcxx, lib/libcxxabi: new versions

I think this is good to go.

I built through the ABI change with this diff using the directions
George posted earlier:

> To update from source, you must build clang before you build the
> new versions of base libraries.
> First, change major=2 to major=1 in
> /usr/src/gnu/usr.bin/clang/libLLVM/shlib_version.
> 
> Then build clang:
> 
> # cd /usr/src/gnu/usr.bin/clang
> # make obj
> # make
> # make install
> 
> Then change major=1 back to major=2 in
> /usr/src/gnu/usr.bin/clang/libLLVM/shlib_version.
> Then build userland (including clang again).

Then I built a new snapshot and sysupgraded to that snapshot, all
without incident. The snapshot is in my home dir on cvs
(snapshots/macppc) if anyone wants to avoid the build. I checked the
tarballs and the right versions of the bumped libs are all there.

ok mortimer@


> 
> Index: distrib/sets/lists/base/md.amd64
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.amd64,v
> retrieving revision 1.875
> diff -u -p -r1.875 md.amd64
> --- distrib/sets/lists/base/md.amd64  30 Dec 2019 02:20:33 -0000      1.875
> +++ distrib/sets/lists/base/md.amd64  12 Feb 2020 20:52:32 -0000
> @@ -81,9 +81,9 @@
>  ./usr/lib/gcc-lib/amd64-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/amd64-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/amd64-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/amd64-openbsd
> Index: distrib/sets/lists/base/md.arm64
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.arm64,v
> retrieving revision 1.22
> diff -u -p -r1.22 md.arm64
> --- distrib/sets/lists/base/md.arm64  30 Dec 2019 02:20:34 -0000      1.22
> +++ distrib/sets/lists/base/md.arm64  12 Feb 2020 20:52:32 -0000
> @@ -37,9 +37,9 @@
>  ./usr/lib/crtbeginS.o
>  ./usr/lib/crtend.o
>  ./usr/lib/crtendS.o
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/libdata/perl5/aarch64-openbsd
>  ./usr/libdata/perl5/aarch64-openbsd/.packlist
> Index: distrib/sets/lists/base/md.armv7
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.armv7,v
> retrieving revision 1.284
> diff -u -p -r1.284 md.armv7
> --- distrib/sets/lists/base/md.armv7  30 Dec 2019 02:20:34 -0000      1.284
> +++ distrib/sets/lists/base/md.armv7  12 Feb 2020 20:52:32 -0000
> @@ -37,9 +37,9 @@
>  ./usr/lib/crtbeginS.o
>  ./usr/lib/crtend.o
>  ./usr/lib/crtendS.o
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/libdata/perl5/arm-openbsd
>  ./usr/libdata/perl5/arm-openbsd/.packlist
> Index: distrib/sets/lists/base/md.i386
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.i386,v
> retrieving revision 1.1254
> diff -u -p -r1.1254 md.i386
> --- distrib/sets/lists/base/md.i386   30 Dec 2019 02:20:34 -0000      1.1254
> +++ distrib/sets/lists/base/md.i386   12 Feb 2020 20:52:32 -0000
> @@ -78,9 +78,9 @@
>  ./usr/lib/crtbeginS.o
>  ./usr/lib/crtend.o
>  ./usr/lib/crtendS.o
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/libdata/perl5/i386-openbsd
>  ./usr/libdata/perl5/i386-openbsd/.packlist
> Index: distrib/sets/lists/base/md.loongson
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.loongson,v
> retrieving revision 1.456
> diff -u -p -r1.456 md.loongson
> --- distrib/sets/lists/base/md.loongson       30 Dec 2019 02:20:34 -0000      
> 1.456
> +++ distrib/sets/lists/base/md.loongson       12 Feb 2020 20:52:32 -0000
> @@ -48,9 +48,9 @@
>  ./usr/lib/gcc-lib/mips64el-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/mips64el-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/mips64el-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/mips64el-openbsd
> Index: distrib/sets/lists/base/md.macppc
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.macppc,v
> retrieving revision 1.1023
> diff -u -p -r1.1023 md.macppc
> --- distrib/sets/lists/base/md.macppc 30 Dec 2019 02:20:34 -0000      1.1023
> +++ distrib/sets/lists/base/md.macppc 12 Feb 2020 20:52:32 -0000
> @@ -78,9 +78,9 @@
>  ./usr/lib/gcc-lib/powerpc-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/powerpc-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/powerpc-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/powerpc-openbsd
> Index: distrib/sets/lists/base/md.octeon
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.octeon,v
> retrieving revision 1.307
> diff -u -p -r1.307 md.octeon
> --- distrib/sets/lists/base/md.octeon 30 Dec 2019 02:20:34 -0000      1.307
> +++ distrib/sets/lists/base/md.octeon 12 Feb 2020 20:52:32 -0000
> @@ -46,9 +46,9 @@
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/mips64-openbsd
> Index: distrib/sets/lists/base/md.sgi
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.sgi,v
> retrieving revision 1.836
> diff -u -p -r1.836 md.sgi
> --- distrib/sets/lists/base/md.sgi    30 Dec 2019 02:20:34 -0000      1.836
> +++ distrib/sets/lists/base/md.sgi    12 Feb 2020 20:52:32 -0000
> @@ -77,9 +77,9 @@
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/mips64-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/mips64-openbsd
> Index: distrib/sets/lists/base/md.sparc64
> ===================================================================
> RCS file: /cvs/src/distrib/sets/lists/base/md.sparc64,v
> retrieving revision 1.1020
> diff -u -p -r1.1020 md.sparc64
> --- distrib/sets/lists/base/md.sparc64        30 Dec 2019 02:20:34 -0000      
> 1.1020
> +++ distrib/sets/lists/base/md.sparc64        12 Feb 2020 20:52:32 -0000
> @@ -79,9 +79,9 @@
>  ./usr/lib/gcc-lib/sparc64-unknown-openbsd6.6/4.2.1/collect2
>  ./usr/lib/gcc-lib/sparc64-unknown-openbsd6.6/4.2.1/libgcc.a
>  ./usr/lib/gcc-lib/sparc64-unknown-openbsd6.6/4.2.1/specs
> -./usr/lib/libLLVM.so.1.0
> -./usr/lib/libc++.so.3.0
> -./usr/lib/libc++abi.so.1.0
> +./usr/lib/libLLVM.so.2.0
> +./usr/lib/libc++.so.4.0
> +./usr/lib/libc++abi.so.2.0
>  ./usr/lib/libcompiler_rt.a
>  ./usr/lib/libstdc++.so.57.0
>  ./usr/libdata/perl5/sparc64-openbsd
> Index: gnu/llvm/tools/clang/include/clang/Driver/Options.td
> ===================================================================
> RCS file: /cvs/src/gnu/llvm/tools/clang/include/clang/Driver/Options.td,v
> retrieving revision 1.11
> diff -u -p -r1.11 Options.td
> --- gnu/llvm/tools/clang/include/clang/Driver/Options.td      23 Jun 2019 
> 22:05:15 -0000      1.11
> +++ gnu/llvm/tools/clang/include/clang/Driver/Options.td      12 Feb 2020 
> 20:52:35 -0000
> @@ -2238,6 +2238,12 @@ def mlongcall: Flag<["-"], "mlongcall">,
>      Group<m_ppc_Features_Group>;
>  def mno_longcall : Flag<["-"], "mno-longcall">,
>      Group<m_ppc_Features_Group>;
> +def maix_struct_return : Flag<["-"], "maix-struct-return">,
> +  Group<m_Group>, Flags<[CC1Option]>,
> +  HelpText<"Return all structs in memory (PPC32 only)">;
> +def msvr4_struct_return : Flag<["-"], "msvr4-struct-return">,
> +  Group<m_Group>, Flags<[CC1Option]>,
> +  HelpText<"Return small structs in registers (PPC32 only)">;
>  
>  def mvx : Flag<["-"], "mvx">, Group<m_Group>;
>  def mno_vx : Flag<["-"], "mno-vx">, Group<m_Group>;
> Index: gnu/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
> ===================================================================
> RCS file: /cvs/src/gnu/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp,v
> retrieving revision 1.1.1.7
> diff -u -p -r1.1.1.7 TargetInfo.cpp
> --- gnu/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp   23 Jun 2019 21:37:39 
> -0000      1.1.1.7
> +++ gnu/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp   12 Feb 2020 20:52:35 
> -0000
> @@ -4092,12 +4092,24 @@ namespace {
>  /// PPC32_SVR4_ABIInfo - The 32-bit PowerPC ELF (SVR4) ABI information.
>  class PPC32_SVR4_ABIInfo : public DefaultABIInfo {
>    bool IsSoftFloatABI;
> +  bool IsRetSmallStructInRegABI;
>  
>    CharUnits getParamTypeAlignment(QualType Ty) const;
>  
>  public:
> -  PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT, bool SoftFloatABI)
> -      : DefaultABIInfo(CGT), IsSoftFloatABI(SoftFloatABI) {}
> +  PPC32_SVR4_ABIInfo(CodeGen::CodeGenTypes &CGT, bool SoftFloatABI,
> +                     bool RetSmallStructInRegABI)
> +      : DefaultABIInfo(CGT), IsSoftFloatABI(SoftFloatABI),
> +        IsRetSmallStructInRegABI(RetSmallStructInRegABI) {}
> +
> +  ABIArgInfo classifyReturnType(QualType RetTy) const;
> +
> +  void computeInfo(CGFunctionInfo &FI) const override {
> +    if (!getCXXABI().classifyReturnType(FI))
> +      FI.getReturnInfo() = classifyReturnType(FI.getReturnType());
> +    for (auto &I : FI.arguments())
> +      I.info = classifyArgumentType(I.type);
> +  }
>  
>    Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr,
>                      QualType Ty) const override;
> @@ -4105,8 +4117,13 @@ public:
>  
>  class PPC32TargetCodeGenInfo : public TargetCodeGenInfo {
>  public:
> -  PPC32TargetCodeGenInfo(CodeGenTypes &CGT, bool SoftFloatABI)
> -      : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT, SoftFloatABI)) {}
> +  PPC32TargetCodeGenInfo(CodeGenTypes &CGT, bool SoftFloatABI,
> +                         bool RetSmallStructInRegABI)
> +      : TargetCodeGenInfo(new PPC32_SVR4_ABIInfo(CGT, SoftFloatABI,
> +                                                 RetSmallStructInRegABI)) {}
> +
> +  static bool isStructReturnInRegABI(const llvm::Triple &Triple,
> +                                     const CodeGenOptions &Opts);
>  
>    int getDwarfEHStackPointer(CodeGen::CodeGenModule &M) const override {
>      // This is recovered from gcc output.
> @@ -4142,6 +4159,34 @@ CharUnits PPC32_SVR4_ABIInfo::getParamTy
>    return CharUnits::fromQuantity(4);
>  }
>  
> +ABIArgInfo PPC32_SVR4_ABIInfo::classifyReturnType(QualType RetTy) const {
> +  uint64_t Size;
> +
> +  // -msvr4-struct-return puts small aggregates in GPR3 and GPR4.
> +  if (isAggregateTypeForABI(RetTy) && IsRetSmallStructInRegABI &&
> +      (Size = getContext().getTypeSize(RetTy)) <= 64) {
> +    // System V ABI (1995), page 3-22, specified:
> +    // > A structure or union whose size is less than or equal to 8 bytes
> +    // > shall be returned in r3 and r4, as if it were first stored in the
> +    // > 8-byte aligned memory area and then the low addressed word were
> +    // > loaded into r3 and the high-addressed word into r4.  Bits beyond
> +    // > the last member of the structure or union are not defined.
> +    //
> +    // GCC for big-endian PPC32 inserts the pad before the first member,
> +    // not "beyond the last member" of the struct.  To stay compatible
> +    // with GCC, we coerce the struct to an integer of the same size.
> +    // LLVM will extend it and return i32 in r3, or i64 in r3:r4.
> +    if (Size == 0)
> +      return ABIArgInfo::getIgnore();
> +    else {
> +      llvm::Type *CoerceTy = llvm::Type::getIntNTy(getVMContext(), Size);
> +      return ABIArgInfo::getDirect(CoerceTy);
> +    }
> +  }
> +
> +  return DefaultABIInfo::classifyReturnType(RetTy);
> +}
> +
>  // TODO: this implementation is now likely redundant with
>  // DefaultABIInfo::EmitVAArg.
>  Address PPC32_SVR4_ABIInfo::EmitVAArg(CodeGenFunction &CGF, Address VAList,
> @@ -4299,6 +4344,25 @@ Address PPC32_SVR4_ABIInfo::EmitVAArg(Co
>    return Result;
>  }
>  
> +bool PPC32TargetCodeGenInfo::isStructReturnInRegABI(
> +    const llvm::Triple &Triple, const CodeGenOptions &Opts) {
> +  assert(Triple.getArch() == llvm::Triple::ppc);
> +
> +  switch (Opts.getStructReturnConvention()) {
> +  case CodeGenOptions::SRCK_Default:
> +    break;
> +  case CodeGenOptions::SRCK_OnStack: // -maix-struct-return
> +    return false;
> +  case CodeGenOptions::SRCK_InRegs: // -msvr4-struct-return
> +    return true;
> +  }
> +
> +  if (Triple.isOSBinFormatELF() && !Triple.isOSLinux())
> +    return true;
> +
> +  return false;
> +}
> +
>  bool
>  PPC32TargetCodeGenInfo::initDwarfEHRegSizeTable(CodeGen::CodeGenFunction 
> &CGF,
>                                                  llvm::Value *Address) const {
> @@ -9330,9 +9394,13 @@ const TargetCodeGenInfo &CodeGenModule::
>      return SetCGInfo(new ARMTargetCodeGenInfo(Types, Kind));
>    }
>  
> -  case llvm::Triple::ppc:
> +  case llvm::Triple::ppc: {
> +    bool RetSmallStructInRegABI =
> +        PPC32TargetCodeGenInfo::isStructReturnInRegABI(Triple, CodeGenOpts);
>      return SetCGInfo(
> -        new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft"));
> +        new PPC32TargetCodeGenInfo(Types, CodeGenOpts.FloatABI == "soft",
> +                                   RetSmallStructInRegABI));
> +  }
>    case llvm::Triple::ppc64:
>      if (Triple.isOSBinFormatELF()) {
>        PPC64_SVR4_ABIInfo::ABIKind Kind = PPC64_SVR4_ABIInfo::ELFv1;
> Index: gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp
> ===================================================================
> RCS file: /cvs/src/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp,v
> retrieving revision 1.20
> diff -u -p -r1.20 Clang.cpp
> --- gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp      25 Oct 2019 
> 00:40:56 -0000      1.20
> +++ gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp      12 Feb 2020 
> 20:52:35 -0000
> @@ -3870,6 +3870,19 @@ void Clang::ConstructJob(Compilation &C,
>      CmdArgs.push_back(A->getValue());
>    }
>  
> +  if (Arg *A = Args.getLastArg(options::OPT_maix_struct_return,
> +                               options::OPT_msvr4_struct_return)) {
> +    if (TC.getArch() != llvm::Triple::ppc) {
> +      D.Diag(diag::err_drv_unsupported_opt_for_target)
> +          << A->getSpelling() << RawTriple.str();
> +    } else if (A->getOption().matches(options::OPT_maix_struct_return)) {
> +      CmdArgs.push_back("-maix-struct-return");
> +    } else {
> +      assert(A->getOption().matches(options::OPT_msvr4_struct_return));
> +      CmdArgs.push_back("-msvr4-struct-return");
> +    }
> +  }
> +
>    if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return,
>                                 options::OPT_freg_struct_return)) {
>      if (TC.getArch() != llvm::Triple::x86) {
> Index: gnu/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp
> ===================================================================
> RCS file: /cvs/src/gnu/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp,v
> retrieving revision 1.4
> diff -u -p -r1.4 CompilerInvocation.cpp
> --- gnu/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp  23 Jun 2019 
> 22:05:15 -0000      1.4
> +++ gnu/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp  12 Feb 2020 
> 20:52:35 -0000
> @@ -1199,11 +1199,18 @@ static bool ParseCodeGenArgs(CodeGenOpti
>        Diags.Report(diag::err_drv_invalid_value) << A->getAsString(Args) << 
> Val;
>    }
>  
> -  if (Arg *A = Args.getLastArg(OPT_fpcc_struct_return, 
> OPT_freg_struct_return)) {
> -    if (A->getOption().matches(OPT_fpcc_struct_return)) {
> +  // X86_32 has -fppc-struct-return and -freg-struct-return.
> +  // PPC32 has -maix-struct-return and -msvr4-struct-return.
> +  if (Arg *A =
> +          Args.getLastArg(OPT_fpcc_struct_return, OPT_freg_struct_return,
> +                          OPT_maix_struct_return, OPT_msvr4_struct_return)) {
> +    const Option &O = A->getOption();
> +    if (O.matches(OPT_fpcc_struct_return) ||
> +        O.matches(OPT_maix_struct_return)) {
>        Opts.setStructReturnConvention(CodeGenOptions::SRCK_OnStack);
>      } else {
> -      assert(A->getOption().matches(OPT_freg_struct_return));
> +      assert(O.matches(OPT_freg_struct_return) ||
> +             O.matches(OPT_msvr4_struct_return));
>        Opts.setStructReturnConvention(CodeGenOptions::SRCK_InRegs);
>      }
>    }
> Index: gnu/usr.bin/clang/libLLVM/shlib_version
> ===================================================================
> RCS file: /cvs/src/gnu/usr.bin/clang/libLLVM/shlib_version,v
> retrieving revision 1.2
> diff -u -p -r1.2 shlib_version
> --- gnu/usr.bin/clang/libLLVM/shlib_version   23 Jun 2019 22:07:38 -0000      
> 1.2
> +++ gnu/usr.bin/clang/libLLVM/shlib_version   12 Feb 2020 20:52:41 -0000
> @@ -1,2 +1,2 @@
> -major=1
> +major=2
>  minor=0
> Index: lib/libcxx/shlib_version
> ===================================================================
> RCS file: /cvs/src/lib/libcxx/shlib_version,v
> retrieving revision 1.6
> diff -u -p -r1.6 shlib_version
> --- lib/libcxx/shlib_version  17 Jun 2019 22:28:47 -0000      1.6
> +++ lib/libcxx/shlib_version  12 Feb 2020 20:52:46 -0000
> @@ -1,2 +1,2 @@
> -major=3
> +major=4
>  minor=0
> Index: lib/libcxxabi/shlib_version
> ===================================================================
> RCS file: /cvs/src/lib/libcxxabi/shlib_version,v
> retrieving revision 1.4
> diff -u -p -r1.4 shlib_version
> --- lib/libcxxabi/shlib_version       17 Jun 2019 22:28:51 -0000      1.4
> +++ lib/libcxxabi/shlib_version       12 Feb 2020 20:52:46 -0000
> @@ -1,3 +1,3 @@
>  # Don't forget to give libc++ the same type of bump!
> -major=1
> +major=2
>  minor=0

Reply via email to