1*795d594fSAndroid Build Coastguard Worker#!/bin/sh 2*795d594fSAndroid Build Coastguard Worker# 3*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2012 The Android Open Source Project 4*795d594fSAndroid Build Coastguard Worker# 5*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*795d594fSAndroid Build Coastguard Worker# 9*795d594fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*795d594fSAndroid Build Coastguard Worker# 11*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*795d594fSAndroid Build Coastguard Worker# limitations under the License. 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Workerimport re 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker 20*795d594fSAndroid Build Coastguard Workerdef run(ctx, args): 21*795d594fSAndroid Build Coastguard Worker bridge_so = "libnativebridgetest.so" if args.O else "libnativebridgetestd.so" 22*795d594fSAndroid Build Coastguard Worker test_dir = ctx.env.DEX_LOCATION 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard Worker # Use libnativebridgetest as a native bridge, start NativeBridgeMain (Main is JniTest main file). 25*795d594fSAndroid Build Coastguard Worker for i, opt in enumerate(args.runtime_option): 26*795d594fSAndroid Build Coastguard Worker if opt.startswith("-Djava.library.path="): 27*795d594fSAndroid Build Coastguard Worker libpath = opt.split(":")[-1] # last entry in libpath is nativetest[64] 28*795d594fSAndroid Build Coastguard Worker args.runtime_option[i] = "-Djava.library.path=" + test_dir 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Worker assert libpath 31*795d594fSAndroid Build Coastguard Worker ctx.run(f"ln -sf {libpath}/{bridge_so} {test_dir}/.") 32*795d594fSAndroid Build Coastguard Worker ctx.run( 33*795d594fSAndroid Build Coastguard Worker f"touch {test_dir}/libarttest.so {test_dir}/libarttestd.so {test_dir}/libinvalid.so" 34*795d594fSAndroid Build Coastguard Worker ) 35*795d594fSAndroid Build Coastguard Worker ctx.run(f"ln -sf {libpath}/libarttest.so {test_dir}/libarttest2.so") 36*795d594fSAndroid Build Coastguard Worker ctx.run(f"ln -sf {libpath}/libarttestd.so {test_dir}/libarttestd2.so") 37*795d594fSAndroid Build Coastguard Worker 38*795d594fSAndroid Build Coastguard Worker ctx.default_run( 39*795d594fSAndroid Build Coastguard Worker args, 40*795d594fSAndroid Build Coastguard Worker runtime_option=["-Xforce-nb-testing", f"-XX:NativeBridge={bridge_so}"], 41*795d594fSAndroid Build Coastguard Worker main="NativeBridgeMain") 42*795d594fSAndroid Build Coastguard Worker 43*795d594fSAndroid Build Coastguard Worker # ASAN prints a warning here. 44*795d594fSAndroid Build Coastguard Worker ctx.run( 45*795d594fSAndroid Build Coastguard Worker fr"sed -i '/WARNING: ASan is ignoring requested __asan_handle_no_return/,+2d' '{args.stderr_file}'" 46*795d594fSAndroid Build Coastguard Worker ) 47