1 /* Return address represented by attribute. 2 Copyright (C) 2003 Red Hat, Inc. 3 Written by Ulrich Drepper <drepper (at) redhat.com>, 2003. 4 5 This program is Open Source software; you can redistribute it and/or 6 modify it under the terms of the Open Software License version 1.0 as 7 published by the Open Source Initiative. 8 9 You should have received a copy of the Open Software License along 10 with this program; if not, you may obtain a copy of the Open Software 11 License version 1.0 from http://www.opensource.org/licenses/osl.php or 12 by writing the Open Source Initiative c/o Lawrence Rosen, Esq., 13 3001 King Ranch Road, Ukiah, CA 95482. */ 14 15 #ifdef HAVE_CONFIG_H 16 # include <config.h> 17 #endif 18 19 #include <dwarf.h> 20 #include "libdwP.h" 21 22 23 int 24 dwarf_formaddr (attr, return_addr) 25 Dwarf_Attribute *attr; 26 Dwarf_Addr *return_addr; 27 { 28 if (attr == NULL) 29 return -1; 30 31 if (unlikely (attr->form != DW_FORM_addr)) 32 { 33 __libdw_seterrno (DWARF_E_NO_ADDR); 34 return -1; 35 } 36 37 if (attr->cu->address_size == 8) 38 *return_addr = read_8ubyte_unaligned (attr->cu->dbg, attr->valp); 39 else 40 *return_addr = read_4ubyte_unaligned (attr->cu->dbg, attr->valp); 41 42 return 0; 43 } 44