diff --git a/.gitignore b/.gitignore index f45b3a8..1c78938 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ /.build-*.log /*.src.rpm /noarch -/archive.tar.gz /asm-6.2.pom /asm-analysis-6.2.pom /asm-commons-6.2.pom @@ -11,8 +10,6 @@ /asm-tree-6.2.pom /asm-util-6.2.pom /asm-xml-6.2.pom -/objectweb-asm-6.2.tar.gz -/objectweb-asm-6.2.1.tar.gz /asm-6.2.1.pom /asm-analysis-6.2.1.pom /asm-commons-6.2.1.pom @@ -20,8 +17,8 @@ /asm-tree-6.2.1.pom /asm-util-6.2.1.pom /asm-xml-6.2.1.pom -/objectweb-asm-7.0.tar.gz -/objectweb-asm-7.0/ +/objectweb-asm-*.tar.gz +/objectweb-asm-*/ /asm-7.0.pom /asm-analysis-7.0.pom /asm-commons-7.0.pom diff --git a/0001-Revert-upstream-change-2a58bc9.patch b/0001-Revert-upstream-change-2a58bc9.patch new file mode 100644 index 0000000..907acb5 --- /dev/null +++ b/0001-Revert-upstream-change-2a58bc9.patch @@ -0,0 +1,813 @@ +From df50f201a0f253bc55dc89e191ac66cb920a3274 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Wed, 6 May 2020 15:09:27 +0100 +Subject: [PATCH] Revert upstream change 2a58bc9 + +--- + .../commons/RemappingAnnotationAdapter.java | 85 ++++++ + .../asm/commons/RemappingClassAdapter.java | 167 +++++++++++ + .../asm/commons/RemappingFieldAdapter.java | 74 +++++ + .../asm/commons/RemappingMethodAdapter.java | 279 ++++++++++++++++++ + .../commons/RemappingSignatureAdapter.java | 157 ++++++++++ + 5 files changed, 762 insertions(+) + create mode 100644 asm-commons/src/main/java/org/objectweb/asm/commons/RemappingAnnotationAdapter.java + create mode 100644 asm-commons/src/main/java/org/objectweb/asm/commons/RemappingClassAdapter.java + create mode 100644 asm-commons/src/main/java/org/objectweb/asm/commons/RemappingFieldAdapter.java + create mode 100644 asm-commons/src/main/java/org/objectweb/asm/commons/RemappingMethodAdapter.java + create mode 100644 asm-commons/src/main/java/org/objectweb/asm/commons/RemappingSignatureAdapter.java + +diff --git a/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingAnnotationAdapter.java b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingAnnotationAdapter.java +new file mode 100644 +index 0000000..86c6ee9 +--- /dev/null ++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingAnnotationAdapter.java +@@ -0,0 +1,85 @@ ++// ASM: a very small and fast Java bytecode manipulation framework ++// Copyright (c) 2000-2011 INRIA, France Telecom ++// All rights reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions ++// are met: ++// 1. Redistributions of source code must retain the above copyright ++// notice, this list of conditions and the following disclaimer. ++// 2. Redistributions in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// 3. Neither the name of the copyright holders nor the names of its ++// contributors may be used to endorse or promote products derived from ++// this software without specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++// THE POSSIBILITY OF SUCH DAMAGE. ++ ++package org.objectweb.asm.commons; ++ ++import org.objectweb.asm.AnnotationVisitor; ++import org.objectweb.asm.Opcodes; ++ ++/** ++ * An {@link AnnotationVisitor} adapter for type remapping. ++ * ++ * @deprecated use {@link AnnotationRemapper} instead. ++ * @author Eugene Kuleshov ++ */ ++@Deprecated ++public class RemappingAnnotationAdapter extends AnnotationVisitor { ++ ++ protected final Remapper remapper; ++ ++ public RemappingAnnotationAdapter( ++ final AnnotationVisitor annotationVisitor, final Remapper remapper) { ++ this(Opcodes.ASM6, annotationVisitor, remapper); ++ } ++ ++ protected RemappingAnnotationAdapter( ++ final int api, final AnnotationVisitor annotationVisitor, final Remapper remapper) { ++ super(api, annotationVisitor); ++ this.remapper = remapper; ++ } ++ ++ @Override ++ public void visit(final String name, final Object value) { ++ av.visit(name, remapper.mapValue(value)); ++ } ++ ++ @Override ++ public void visitEnum(final String name, final String descriptor, final String value) { ++ av.visitEnum(name, remapper.mapDesc(descriptor), value); ++ } ++ ++ @Override ++ public AnnotationVisitor visitAnnotation(final String name, final String descriptor) { ++ AnnotationVisitor annotationVisitor = av.visitAnnotation(name, remapper.mapDesc(descriptor)); ++ return annotationVisitor == null ++ ? null ++ : (annotationVisitor == av ++ ? this ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper)); ++ } ++ ++ @Override ++ public AnnotationVisitor visitArray(final String name) { ++ AnnotationVisitor annotationVisitor = av.visitArray(name); ++ return annotationVisitor == null ++ ? null ++ : (annotationVisitor == av ++ ? this ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper)); ++ } ++} +diff --git a/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingClassAdapter.java b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingClassAdapter.java +new file mode 100644 +index 0000000..b4cc08c +--- /dev/null ++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingClassAdapter.java +@@ -0,0 +1,167 @@ ++// ASM: a very small and fast Java bytecode manipulation framework ++// Copyright (c) 2000-2011 INRIA, France Telecom ++// All rights reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions ++// are met: ++// 1. Redistributions of source code must retain the above copyright ++// notice, this list of conditions and the following disclaimer. ++// 2. Redistributions in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// 3. Neither the name of the copyright holders nor the names of its ++// contributors may be used to endorse or promote products derived from ++// this software without specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++// THE POSSIBILITY OF SUCH DAMAGE. ++ ++package org.objectweb.asm.commons; ++ ++import org.objectweb.asm.AnnotationVisitor; ++import org.objectweb.asm.ClassVisitor; ++import org.objectweb.asm.FieldVisitor; ++import org.objectweb.asm.MethodVisitor; ++import org.objectweb.asm.ModuleVisitor; ++import org.objectweb.asm.Opcodes; ++import org.objectweb.asm.TypePath; ++ ++/** ++ * A {@link ClassVisitor} for type remapping. ++ * ++ * @deprecated use {@link ClassRemapper} instead. ++ * @author Eugene Kuleshov ++ */ ++@Deprecated ++public class RemappingClassAdapter extends ClassVisitor { ++ ++ protected final Remapper remapper; ++ ++ protected String className; ++ ++ public RemappingClassAdapter(final ClassVisitor classVisitor, final Remapper remapper) { ++ this(Opcodes.ASM6, classVisitor, remapper); ++ } ++ ++ protected RemappingClassAdapter( ++ final int api, final ClassVisitor classVisitor, final Remapper remapper) { ++ super(api, classVisitor); ++ this.remapper = remapper; ++ } ++ ++ @Override ++ public void visit( ++ final int version, ++ final int access, ++ final String name, ++ final String signature, ++ final String superName, ++ final String[] interfaces) { ++ this.className = name; ++ super.visit( ++ version, ++ access, ++ remapper.mapType(name), ++ remapper.mapSignature(signature, false), ++ remapper.mapType(superName), ++ interfaces == null ? null : remapper.mapTypes(interfaces)); ++ } ++ ++ @Override ++ public ModuleVisitor visitModule(final String name, final int flags, final String version) { ++ throw new RuntimeException("RemappingClassAdapter is deprecated, use ClassRemapper instead"); ++ } ++ ++ @Override ++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitAnnotation(remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); ++ } ++ ++ @Override ++ public AnnotationVisitor visitTypeAnnotation( ++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ? null : createRemappingAnnotationAdapter(annotationVisitor); ++ } ++ ++ @Override ++ public FieldVisitor visitField( ++ final int access, ++ final String name, ++ final String descriptor, ++ final String signature, ++ final Object value) { ++ FieldVisitor fieldVisitor = ++ super.visitField( ++ access, ++ remapper.mapFieldName(className, name, descriptor), ++ remapper.mapDesc(descriptor), ++ remapper.mapSignature(signature, true), ++ remapper.mapValue(value)); ++ return fieldVisitor == null ? null : createRemappingFieldAdapter(fieldVisitor); ++ } ++ ++ @Override ++ public MethodVisitor visitMethod( ++ final int access, ++ final String name, ++ final String descriptor, ++ final String signature, ++ final String[] exceptions) { ++ String newDescriptor = remapper.mapMethodDesc(descriptor); ++ MethodVisitor methodVisitor = ++ super.visitMethod( ++ access, ++ remapper.mapMethodName(className, name, descriptor), ++ newDescriptor, ++ remapper.mapSignature(signature, false), ++ exceptions == null ? null : remapper.mapTypes(exceptions)); ++ return methodVisitor == null ++ ? null ++ : createRemappingMethodAdapter(access, newDescriptor, methodVisitor); ++ } ++ ++ @Override ++ public void visitInnerClass( ++ final String name, final String outerName, final String innerName, final int access) { ++ super.visitInnerClass( ++ remapper.mapType(name), ++ outerName == null ? null : remapper.mapType(outerName), ++ innerName, ++ access); ++ } ++ ++ @Override ++ public void visitOuterClass(final String owner, final String name, final String descriptor) { ++ super.visitOuterClass( ++ remapper.mapType(owner), ++ name == null ? null : remapper.mapMethodName(owner, name, descriptor), ++ descriptor == null ? null : remapper.mapMethodDesc(descriptor)); ++ } ++ ++ protected FieldVisitor createRemappingFieldAdapter(final FieldVisitor fieldVisitor) { ++ return new RemappingFieldAdapter(fieldVisitor, remapper); ++ } ++ ++ protected MethodVisitor createRemappingMethodAdapter( ++ final int access, final String newDescriptor, final MethodVisitor methodVisitior) { ++ return new RemappingMethodAdapter(access, newDescriptor, methodVisitior, remapper); ++ } ++ ++ protected AnnotationVisitor createRemappingAnnotationAdapter(final AnnotationVisitor av) { ++ return new RemappingAnnotationAdapter(av, remapper); ++ } ++} +diff --git a/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingFieldAdapter.java b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingFieldAdapter.java +new file mode 100644 +index 0000000..5f14f33 +--- /dev/null ++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingFieldAdapter.java +@@ -0,0 +1,74 @@ ++// ASM: a very small and fast Java bytecode manipulation framework ++// Copyright (c) 2000-2011 INRIA, France Telecom ++// All rights reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions ++// are met: ++// 1. Redistributions of source code must retain the above copyright ++// notice, this list of conditions and the following disclaimer. ++// 2. Redistributions in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// 3. Neither the name of the copyright holders nor the names of its ++// contributors may be used to endorse or promote products derived from ++// this software without specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++// THE POSSIBILITY OF SUCH DAMAGE. ++ ++package org.objectweb.asm.commons; ++ ++import org.objectweb.asm.AnnotationVisitor; ++import org.objectweb.asm.FieldVisitor; ++import org.objectweb.asm.Opcodes; ++import org.objectweb.asm.TypePath; ++ ++/** ++ * A {@link FieldVisitor} adapter for type remapping. ++ * ++ * @deprecated use {@link FieldRemapper} instead. ++ * @author Eugene Kuleshov ++ */ ++@Deprecated ++public class RemappingFieldAdapter extends FieldVisitor { ++ ++ private final Remapper remapper; ++ ++ public RemappingFieldAdapter(final FieldVisitor fieldVisitor, final Remapper remapper) { ++ this(Opcodes.ASM6, fieldVisitor, remapper); ++ } ++ ++ protected RemappingFieldAdapter( ++ final int api, final FieldVisitor fieldVisitor, final Remapper remapper) { ++ super(api, fieldVisitor); ++ this.remapper = remapper; ++ } ++ ++ @Override ++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = fv.visitAnnotation(remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? null ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public AnnotationVisitor visitTypeAnnotation( ++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? null ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++} +diff --git a/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingMethodAdapter.java b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingMethodAdapter.java +new file mode 100644 +index 0000000..cf21f18 +--- /dev/null ++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingMethodAdapter.java +@@ -0,0 +1,279 @@ ++// ASM: a very small and fast Java bytecode manipulation framework ++// Copyright (c) 2000-2011 INRIA, France Telecom ++// All rights reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions ++// are met: ++// 1. Redistributions of source code must retain the above copyright ++// notice, this list of conditions and the following disclaimer. ++// 2. Redistributions in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// 3. Neither the name of the copyright holders nor the names of its ++// contributors may be used to endorse or promote products derived from ++// this software without specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++// THE POSSIBILITY OF SUCH DAMAGE. ++ ++package org.objectweb.asm.commons; ++ ++import org.objectweb.asm.AnnotationVisitor; ++import org.objectweb.asm.Handle; ++import org.objectweb.asm.Label; ++import org.objectweb.asm.MethodVisitor; ++import org.objectweb.asm.Opcodes; ++import org.objectweb.asm.TypePath; ++ ++/** ++ * A {@link LocalVariablesSorter} for type mapping. ++ * ++ * @deprecated use {@link MethodRemapper} instead. ++ * @author Eugene Kuleshov ++ */ ++@Deprecated ++public class RemappingMethodAdapter extends LocalVariablesSorter { ++ ++ protected final Remapper remapper; ++ ++ public RemappingMethodAdapter( ++ final int access, ++ final String descriptor, ++ final MethodVisitor methodVisitor, ++ final Remapper remapper) { ++ this(Opcodes.ASM6, access, descriptor, methodVisitor, remapper); ++ } ++ ++ protected RemappingMethodAdapter( ++ final int api, ++ final int access, ++ final String descriptor, ++ final MethodVisitor methodVisitor, ++ final Remapper remapper) { ++ super(api, access, descriptor, methodVisitor); ++ this.remapper = remapper; ++ } ++ ++ @Override ++ public AnnotationVisitor visitAnnotationDefault() { ++ AnnotationVisitor annotationVisitor = super.visitAnnotationDefault(); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public AnnotationVisitor visitAnnotation(final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitAnnotation(remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public AnnotationVisitor visitTypeAnnotation( ++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitTypeAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public AnnotationVisitor visitParameterAnnotation( ++ final int parameter, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitParameterAnnotation(parameter, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public void visitFrame( ++ final int type, ++ final int numLocal, ++ final Object[] local, ++ final int numStack, ++ final Object[] stack) { ++ super.visitFrame( ++ type, numLocal, remapEntries(numLocal, local), numStack, remapEntries(numStack, stack)); ++ } ++ ++ private Object[] remapEntries(final int numTypes, final Object[] entries) { ++ if (entries == null) { ++ return entries; ++ } ++ Object[] remappedEntries = null; ++ for (int i = 0; i < numTypes; ++i) { ++ if (entries[i] instanceof String) { ++ if (remappedEntries == null) { ++ remappedEntries = new Object[numTypes]; ++ System.arraycopy(entries, 0, remappedEntries, 0, numTypes); ++ } ++ remappedEntries[i] = remapper.mapType((String) entries[i]); ++ } ++ } ++ return remappedEntries == null ? entries : remappedEntries; ++ } ++ ++ @Override ++ public void visitFieldInsn( ++ final int opcode, final String owner, final String name, final String descriptor) { ++ super.visitFieldInsn( ++ opcode, ++ remapper.mapType(owner), ++ remapper.mapFieldName(owner, name, descriptor), ++ remapper.mapDesc(descriptor)); ++ } ++ ++ @Deprecated ++ @Override ++ public void visitMethodInsn( ++ final int opcode, final String owner, final String name, final String descriptor) { ++ if (api >= Opcodes.ASM5) { ++ super.visitMethodInsn(opcode, owner, name, descriptor); ++ return; ++ } ++ doVisitMethodInsn(opcode, owner, name, descriptor, opcode == Opcodes.INVOKEINTERFACE); ++ } ++ ++ @Override ++ public void visitMethodInsn( ++ final int opcode, ++ final String owner, ++ final String name, ++ final String descriptor, ++ final boolean isInterface) { ++ if (api < Opcodes.ASM5) { ++ super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); ++ return; ++ } ++ doVisitMethodInsn(opcode, owner, name, descriptor, isInterface); ++ } ++ ++ private void doVisitMethodInsn( ++ final int opcode, ++ final String owner, ++ final String name, ++ final String descriptor, ++ final boolean isInterface) { ++ // Calling super.visitMethodInsn requires to call the correct version ++ // depending on this.api (otherwise infinite loops can occur). To ++ // simplify and to make it easier to automatically remove the backward ++ // compatibility code, we inline the code of the overridden method here. ++ // IMPORTANT: THIS ASSUMES THAT visitMethodInsn IS NOT OVERRIDDEN IN ++ // LocalVariableSorter. ++ if (mv != null) { ++ mv.visitMethodInsn( ++ opcode, ++ remapper.mapType(owner), ++ remapper.mapMethodName(owner, name, descriptor), ++ remapper.mapMethodDesc(descriptor), ++ isInterface); ++ } ++ } ++ ++ @Override ++ public void visitInvokeDynamicInsn( ++ final String name, ++ final String descriptor, ++ final Handle bootstrapMethodHandle, ++ final Object... bootstrapMethodArguments) { ++ for (int i = 0; i < bootstrapMethodArguments.length; i++) { ++ bootstrapMethodArguments[i] = remapper.mapValue(bootstrapMethodArguments[i]); ++ } ++ super.visitInvokeDynamicInsn( ++ remapper.mapInvokeDynamicMethodName(name, descriptor), ++ remapper.mapMethodDesc(descriptor), ++ (Handle) remapper.mapValue(bootstrapMethodHandle), ++ bootstrapMethodArguments); ++ } ++ ++ @Override ++ public void visitTypeInsn(final int opcode, final String type) { ++ super.visitTypeInsn(opcode, remapper.mapType(type)); ++ } ++ ++ @Override ++ public void visitLdcInsn(final Object value) { ++ super.visitLdcInsn(remapper.mapValue(value)); ++ } ++ ++ @Override ++ public void visitMultiANewArrayInsn(final String descriptor, final int numDimensions) { ++ super.visitMultiANewArrayInsn(remapper.mapDesc(descriptor), numDimensions); ++ } ++ ++ @Override ++ public AnnotationVisitor visitInsnAnnotation( ++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitInsnAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public void visitTryCatchBlock( ++ final Label start, final Label end, final Label handler, final String type) { ++ super.visitTryCatchBlock(start, end, handler, type == null ? null : remapper.mapType(type)); ++ } ++ ++ @Override ++ public AnnotationVisitor visitTryCatchAnnotation( ++ final int typeRef, final TypePath typePath, final String descriptor, final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitTryCatchAnnotation(typeRef, typePath, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++ ++ @Override ++ public void visitLocalVariable( ++ final String name, ++ final String descriptor, ++ final String signature, ++ final Label start, ++ final Label end, ++ final int index) { ++ super.visitLocalVariable( ++ name, ++ remapper.mapDesc(descriptor), ++ remapper.mapSignature(signature, true), ++ start, ++ end, ++ index); ++ } ++ ++ @Override ++ public AnnotationVisitor visitLocalVariableAnnotation( ++ final int typeRef, ++ final TypePath typePath, ++ final Label[] start, ++ final Label[] end, ++ final int[] index, ++ final String descriptor, ++ final boolean visible) { ++ AnnotationVisitor annotationVisitor = ++ super.visitLocalVariableAnnotation( ++ typeRef, typePath, start, end, index, remapper.mapDesc(descriptor), visible); ++ return annotationVisitor == null ++ ? annotationVisitor ++ : new RemappingAnnotationAdapter(annotationVisitor, remapper); ++ } ++} +diff --git a/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingSignatureAdapter.java b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingSignatureAdapter.java +new file mode 100644 +index 0000000..1553cd5 +--- /dev/null ++++ b/asm-commons/src/main/java/org/objectweb/asm/commons/RemappingSignatureAdapter.java +@@ -0,0 +1,157 @@ ++// ASM: a very small and fast Java bytecode manipulation framework ++// Copyright (c) 2000-2011 INRIA, France Telecom ++// All rights reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions ++// are met: ++// 1. Redistributions of source code must retain the above copyright ++// notice, this list of conditions and the following disclaimer. ++// 2. Redistributions in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// 3. Neither the name of the copyright holders nor the names of its ++// contributors may be used to endorse or promote products derived from ++// this software without specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE ++// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ++// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ++// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ++// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF ++// THE POSSIBILITY OF SUCH DAMAGE. ++ ++package org.objectweb.asm.commons; ++ ++import org.objectweb.asm.Opcodes; ++import org.objectweb.asm.signature.SignatureVisitor; ++ ++/** ++ * A {@link SignatureVisitor} adapter for type mapping. ++ * ++ * @deprecated use {@link SignatureRemapper} instead. ++ * @author Eugene Kuleshov ++ */ ++@Deprecated ++public class RemappingSignatureAdapter extends SignatureVisitor { ++ ++ private final SignatureVisitor signatureVisitor; ++ ++ private final Remapper remapper; ++ ++ private String className; ++ ++ public RemappingSignatureAdapter( ++ final SignatureVisitor signatureVisitor, final Remapper remapper) { ++ this(Opcodes.ASM6, signatureVisitor, remapper); ++ } ++ ++ protected RemappingSignatureAdapter( ++ final int api, final SignatureVisitor signatureVisitor, final Remapper remapper) { ++ super(api); ++ this.signatureVisitor = signatureVisitor; ++ this.remapper = remapper; ++ } ++ ++ @Override ++ public void visitClassType(final String name) { ++ className = name; ++ signatureVisitor.visitClassType(remapper.mapType(name)); ++ } ++ ++ @Override ++ public void visitInnerClassType(final String name) { ++ String remappedOuter = remapper.mapType(className) + '$'; ++ className = className + '$' + name; ++ String remappedName = remapper.mapType(className); ++ int index = ++ remappedName.startsWith(remappedOuter) ++ ? remappedOuter.length() ++ : remappedName.lastIndexOf('$') + 1; ++ signatureVisitor.visitInnerClassType(remappedName.substring(index)); ++ } ++ ++ @Override ++ public void visitFormalTypeParameter(final String name) { ++ signatureVisitor.visitFormalTypeParameter(name); ++ } ++ ++ @Override ++ public void visitTypeVariable(final String name) { ++ signatureVisitor.visitTypeVariable(name); ++ } ++ ++ @Override ++ public SignatureVisitor visitArrayType() { ++ signatureVisitor.visitArrayType(); ++ return this; ++ } ++ ++ @Override ++ public void visitBaseType(final char descriptor) { ++ signatureVisitor.visitBaseType(descriptor); ++ } ++ ++ @Override ++ public SignatureVisitor visitClassBound() { ++ signatureVisitor.visitClassBound(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitExceptionType() { ++ signatureVisitor.visitExceptionType(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitInterface() { ++ signatureVisitor.visitInterface(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitInterfaceBound() { ++ signatureVisitor.visitInterfaceBound(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitParameterType() { ++ signatureVisitor.visitParameterType(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitReturnType() { ++ signatureVisitor.visitReturnType(); ++ return this; ++ } ++ ++ @Override ++ public SignatureVisitor visitSuperclass() { ++ signatureVisitor.visitSuperclass(); ++ return this; ++ } ++ ++ @Override ++ public void visitTypeArgument() { ++ signatureVisitor.visitTypeArgument(); ++ } ++ ++ @Override ++ public SignatureVisitor visitTypeArgument(final char wildcard) { ++ signatureVisitor.visitTypeArgument(wildcard); ++ return this; ++ } ++ ++ @Override ++ public void visitEnd() { ++ signatureVisitor.visitEnd(); ++ } ++} +-- +2.26.0 + diff --git a/objectweb-asm.spec b/objectweb-asm.spec index 39f9dfe..107a395 100644 --- a/objectweb-asm.spec +++ b/objectweb-asm.spec @@ -3,7 +3,7 @@ Name: objectweb-asm Version: 7.3.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Java bytecode manipulation and analysis framework License: BSD URL: http://asm.ow2.org/ @@ -24,6 +24,10 @@ Source8: asm-all.pom # The source contains binary jars that cannot be verified for licensing and could be proprietary Source9: generate-tarball.sh +# Revert upstream change https://gitlab.ow2.org/asm/asm/-/commit/2a58bc9bcf2ea6eee03e973d1df4cf9312573c9d +# To restore some deprecations that were deleted and broke the API +Patch0: 0001-Revert-upstream-change-2a58bc9.patch + BuildRequires: maven-local BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) BuildRequires: mvn(org.apache.maven.plugins:maven-shade-plugin) @@ -63,6 +67,8 @@ This package provides %{summary}. %prep %setup -q +%patch0 -p1 + # A custom parent pom to aggregate the build cp -p %{SOURCE1} pom.xml @@ -150,6 +156,9 @@ popd %license LICENSE.txt %changelog +* Wed May 06 2020 Mat Booth - 7.3.1-2 +- Revert an upstream change to prevent breaking API change + * Thu Feb 27 2020 Jayashree Huttanagoudat - 7.3.1-1 - Upgraded to upstream version 7.3.1.