/* * Copyright 2015-present Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain * a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.facebook.buck.android.relinker; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.junit.Test; public class SymbolsTest { @Test public void testSymbolExtraction() { Symbols.SymbolInfo si; // CHECKSTYLE.OFF: LineLength si = Symbols.extractSymbolInfo( "/opt/android_ndk/r12b/sources/third_party/vulkan/src/build-android/jniLibs/armeabi-v7a/libVkLayer_core_validation.so: file format elf32-littlearm"); // CHECKSTYLE.ON: LineLength assertNull(si); si = Symbols.extractSymbolInfo(""); assertNull(si); si = Symbols.extractSymbolInfo("DYNAMIC SYMBOL TABLE:"); assertNull(si); si = Symbols.extractSymbolInfo("00000000 DF *UND* 00000000 __cxa_finalize"); assertNotNull(si); assertTrue(si.isUndefined); assertFalse(si.isGlobal); assertEquals(si.symbol, "__cxa_finalize"); si = Symbols.extractSymbolInfo("00000000 DF *UND* 00000000 strlen"); assertNotNull(si); assertTrue(si.isUndefined); assertFalse(si.isGlobal); assertEquals(si.symbol, "strlen"); si = Symbols.extractSymbolInfo("00174a8c g DF .text 0000000a __aeabi_unwind_cpp_pr0"); assertNotNull(si); assertFalse(si.isUndefined); assertTrue(si.isGlobal); assertEquals(si.symbol, "__aeabi_unwind_cpp_pr0"); si = Symbols.extractSymbolInfo("00000000 DF *UND* 00000000 LIBC strlen"); assertNotNull(si); assertTrue(si.isUndefined); assertFalse(si.isGlobal); assertEquals(si.symbol, "strlen"); si = Symbols.extractSymbolInfo("00174a8c g DF .text 0000000a BASE __aeabi_unwind_cpp_pr0"); assertNotNull(si); assertFalse(si.isUndefined); assertTrue(si.isGlobal); assertEquals(si.symbol, "__aeabi_unwind_cpp_pr0"); } }