17df30109963092559d3760c0661a020f9daf1030The Android Open Source Project/* Describe known core note formats. 27df30109963092559d3760c0661a020f9daf1030The Android Open Source Project Copyright (C) 2007, 2010 Red Hat, Inc. 37df30109963092559d3760c0661a020f9daf1030The Android Open Source Project This file is part of elfutils. 47df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 57df30109963092559d3760c0661a020f9daf1030The Android Open Source Project This file is free software; you can redistribute it and/or modify 67df30109963092559d3760c0661a020f9daf1030The Android Open Source Project it under the terms of either 77df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 87df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * the GNU Lesser General Public License as published by the Free 97df30109963092559d3760c0661a020f9daf1030The Android Open Source Project Software Foundation; either version 3 of the License, or (at 107df30109963092559d3760c0661a020f9daf1030The Android Open Source Project your option) any later version 117df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 127df30109963092559d3760c0661a020f9daf1030The Android Open Source Project or 137df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 147df30109963092559d3760c0661a020f9daf1030The Android Open Source Project * the GNU General Public License as published by the Free 157df30109963092559d3760c0661a020f9daf1030The Android Open Source Project Software Foundation; either version 2 of the License, or (at 167df30109963092559d3760c0661a020f9daf1030The Android Open Source Project your option) any later version 177df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 187df30109963092559d3760c0661a020f9daf1030The Android Open Source Project or both in parallel, as here. 197df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 207df30109963092559d3760c0661a020f9daf1030The Android Open Source Project elfutils is distributed in the hope that it will be useful, but 217df30109963092559d3760c0661a020f9daf1030The Android Open Source Project WITHOUT ANY WARRANTY; without even the implied warranty of 227df30109963092559d3760c0661a020f9daf1030The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 237df30109963092559d3760c0661a020f9daf1030The Android Open Source Project General Public License for more details. 247df30109963092559d3760c0661a020f9daf1030The Android Open Source Project 257df30109963092559d3760c0661a020f9daf1030The Android Open Source Project You should have received copies of the GNU General Public License and 26 the GNU Lesser General Public License along with this program. If 27 not, see <http://www.gnu.org/licenses/>. */ 28 29#ifdef HAVE_CONFIG_H 30# include <config.h> 31#endif 32 33#include <assert.h> 34#include <byteswap.h> 35#include <endian.h> 36#include <inttypes.h> 37#include <stdio.h> 38#include <stddef.h> 39#include <libeblP.h> 40 41 42int 43ebl_core_note (Ebl *ebl, const GElf_Nhdr *nhdr, const char *name, 44 GElf_Word *regs_offset, size_t *nregloc, 45 const Ebl_Register_Location **reglocs, size_t *nitems, 46 const Ebl_Core_Item **items) 47{ 48 int result = ebl->core_note (nhdr, name, 49 regs_offset, nregloc, reglocs, nitems, items); 50 if (result == 0) 51 { 52 /* The machine specific function did not know this type. */ 53 54 *regs_offset = 0; 55 *nregloc = 0; 56 *reglocs = NULL; 57 switch (nhdr->n_type) 58 { 59#define ITEMS(type, table) \ 60 case type: \ 61 *items = table; \ 62 *nitems = sizeof table / sizeof table[0]; \ 63 result = 1; \ 64 break 65 66 static const Ebl_Core_Item platform[] = 67 { 68 { 69 .name = "Platform", 70 .type = ELF_T_BYTE, .count = 0, .format = 's' 71 } 72 }; 73 ITEMS (NT_PLATFORM, platform); 74 75#undef ITEMS 76 } 77 } 78 79 return result; 80} 81