1bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao/* 2dfb74c5f597542c7587a4144eb31b143d82a2281Elliott Hughes * Copyright (C) 2016 The Android Open Source Project 3bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * 4bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * Licensed under the Apache License, Version 2.0 (the "License"); 5bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * you may not use this file except in compliance with the License. 6bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * You may obtain a copy of the License at 7bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * 8dfb74c5f597542c7587a4144eb31b143d82a2281Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 9bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * 10bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * Unless required by applicable law or agreed to in writing, software 11bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * distributed under the License is distributed on an "AS IS" BASIS, 12bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * See the License for the specific language governing permissions and 14bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao * limitations under the License. 15bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao */ 16bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 17bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao#include "Arch.h" 18bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 19bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao#include <err.h> 20bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 21bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao#include <string> 22bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 23bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gaostd::string to_string(const Arch& arch) { 24bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao switch (arch) { 25bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::arm: 26bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "arm"; 27bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 28bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::arm64: 29bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "arm64"; 30bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 31bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::mips: 32bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "mips"; 33bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 34bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::mips64: 35bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "mips64"; 36bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 37bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::x86: 38bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "x86"; 39bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 40bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao case Arch::x86_64: 41bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return "x86_64"; 42bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } 43bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 44bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao errx(1, "unknown arch '%zu'", size_t(arch)); 45bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao} 46bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 47bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh GaoArch arch_from_string(const std::string& name) { 48bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao if (name == "arm") { 49bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::arm; 50bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } else if (name == "arm64") { 51bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::arm64; 52bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } else if (name == "mips") { 53bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::mips; 54bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } else if (name == "mips64") { 55bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::mips64; 56bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } else if (name == "x86") { 57bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::x86; 58bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } else if (name == "x86_64") { 59bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao return Arch::x86_64; 60bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao } 61bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao 62bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao errx(1, "unknown architecture '%s'", name.c_str()); 63bfb6bae9fb5ef42e4f9ae2847f30f41938c04900Josh Gao} 64