1d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes/* 2d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * Copyright (C) 2017 The Android Open Source Project 3d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * 4d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 5d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * you may not use this file except in compliance with the License. 6d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * You may obtain a copy of the License at 7d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * 8d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * 10d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * Unless required by applicable law or agreed to in writing, software 11d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 12d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * See the License for the specific language governing permissions and 14d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes * limitations under the License. 15d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes */ 16d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 17d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes#include <elf.h> 18d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 19d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes#include <gtest/gtest.h> 20d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 21d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes// https://github.com/android-ndk/ndk/issues/377 22d390df1dbc038843889946555c3ea53548dcab5dElliott HughesTEST(elf, have_ELF_ST_INFO_macros) { 23d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes uint8_t info; 24d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 25d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes // 0x0f 26d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes info = ELF32_ST_INFO(STB_LOCAL, STT_HIPROC); 27d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STB_LOCAL, ELF32_ST_BIND(info)); 28d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STT_HIPROC, ELF32_ST_TYPE(info)); 29d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 30d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes // 0x0f 31d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes info = ELF64_ST_INFO(STB_LOCAL, STT_HIPROC); 32d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STB_LOCAL, ELF64_ST_BIND(info)); 33d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STT_HIPROC, ELF64_ST_TYPE(info)); 34d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 35d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes // 0xf0 36d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes info = ELF32_ST_INFO(STB_LOCAL, STT_HIPROC); 37d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STB_LOCAL, ELF32_ST_BIND(info)); 38d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STT_HIPROC, ELF32_ST_TYPE(info)); 39d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes 40d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes // 0xf0 41d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes info = ELF64_ST_INFO(STB_LOCAL, STT_HIPROC); 42d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STB_LOCAL, ELF64_ST_BIND(info)); 43d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes ASSERT_EQ(STT_HIPROC, ELF64_ST_TYPE(info)); 44d390df1dbc038843889946555c3ea53548dcab5dElliott Hughes} 45